Thumbnail

(2020.11.27~12.01)

 

 

클래스/패키지/메서드/생성자

 

 

클래스(Class)

 

 

클래스는 객체의 속성과 기능을 코드로 구현한 것으로 객체를 클래스로 구현하는 것을 '클래스를 정의한다'라고 표현한다.

 

 

class

(접근제어자) class 클래스 이름 {

   멤버변수;

   메서드;

}

 

 

학생의 정보에 해당하는 studentID(학생 아이디), studentName(학생 이름), grade(학년), address(주소)는 멤버변수에 해당하고 학생의 정보를 보여주는 기능인 showInfo()는 메서드에 해당한다.

 

 

패키지(Package)

 

 

package

패키지는 클래스 파일의 묶음으로 소스코드를 계층구조의 형태로 나타내고 프로젝트의 소스 코드를 어떻게 관리할지와 연관이 깊다.

 

Student와 Course 등 기본이 되는 클래스를 기반으로 하위의 협력 클래스를 패키지로 구분하여 구성한 모습이다. (다른 형태의 계층 구조로도 표현이 가능)

 

* 계층 구조를 잘 구성해야 소스 코드 관리와 유지보수가 편리하다.

 

 

메서드(Method)

 

 

메서드는 함수(function)의 한 종류로 클래스 안에서 멤버 변수를 이용해 구현된 함수를 메서드라고 한다.

 

 

※ 함수란?

 

하나의 기능을 수행하는 코드로 예를 들어 두 개의 숫자를 입력받아 더하는 경우, 평균을 구하는 경우 등 컴퓨터가 특별한 목적의 작업을 수행하는 데 사용한다.

 

※ 함수를 사용하는 이유

 

필요할 때 적절히 구현해 놓은 코드들을 효율적으로 사용하기 위해서 함수를 사용한다.  

 

 

function
함수 구현과 호출, 출력

 

 

함수와 스택(Stack) 메모리

 

 

stack

스택(Stack)은 함수(Function)가 호출될 때 사용하는 메모리로 함수가 실행되고 끝나면 자동으로 메모리가 반환된다. 스택은 자료가 택배 상자처럼 쌓이는 자료구조를 말하며 마지막에 쌓인 자료부터 순서대로 사용할 수 있으며 이 것을 LIFO(Last In First Out) 구조라고 부른다.

 

 

LIFO(Last In First Out) 자세히 알아보기..

 

 

클래스(Class)와 인스턴스(Instance)

 

▶ 클래스 생성하기

 클래스를 사용하기 위해는 new 예약어를 사용하여 클래스를 생성해야 한다.

 

public class Student {
	int studentID;
	String studentName;
	int grade;
	String address;	
	//멤버변수
	public void showInfo() {
		System.out.println(studentName + ", " + address);
	}
    //메서드
	public static void main(String[] arfs) { //메인
		Student studentLee = new Student(); //Student 클래스 생성
		
		studentLee.studentName = "꾸생";
		studentLee.studentID = 777;
		studentLee.address = "Seoul";		
		studentLee.showInfo();
	}
}

 

result: data-origin-height=
결과

 

▶ 객체, 클래스, 인스턴스

 

객체(Object)는 '의사나 행위가 미치는 대상'을 뜻하며 이를 코드로 구현한 것이 클래스입니다. 그리고 클래스가 메모리 공간에 생성된 상태를 인스턴스라고 한다. 또한 생성된 클래스의 인스턴스를 객체라고도 한다.

 

 

▶ 인스턴스와 힙 메모리

 

 

- 인스턴스는 힙(Heap) 메모리에 생성된다.

 

- 하나의 클래스 코드로부터 여러 개의 인스턴스로 생성된다.

 

- 각각의 인스턴스는 다른 메모리에 다른 값을 가진다.

 

 

 

 

생성자(Constructor)

 

 

생성자는 객체를 생성할 때 초기화하기 위해 맨 처음으로 실행되는 명령어의 집합이다. 생성자를 작성하지 않으면 자바 컴파일러가 디폴트 생성자(코드 X, 매개변수 X)를 자동으로 추가하게 된다.

 

 

constructor

- 생성자는 리턴값이 존재하지 않는다.

 

- 인스턴스 생성 시 한 번만 실행된다.

 

- 클래스 이름과 동일한 이름을 가진다.

 

 

 

 

 

 

 

▶ 생성자 오버로드

 

필요에 의해서 생성자를 추가하는 경우 여러 개의 생성자가 하나의 클래스에 존재할 수 있다.