클래스를 만들었다면 객체를 생성할 차례이다.
new 연산자를 사용해서 객체를 생성한다.
new 클래스();
생성된 객체는 메모리의 힙(heap) 영역에 생성된다.
new 연산자는 힙 영역에 객체를 생성시킨 후, 객체의 주소를 리턴하도록 되어 있다.
이 주소를 참조 타입인 클래스 변수에 저장해 두면, 변수를 통해 객체를 사용할 수 있다.
클래스 변수;
변수 = new 클래스();
와
클래스 변수 = new 클래스();
는 같다.
이렇게 new 연산자로 객체를 생성하고 리턴된 객체의 주소를 변수에 저장하면 변수가 객체를 참조하게 된다.
<라이브러리 클래스>
//클래스 선언
public class Student{
}
<실행클래스>
//클래스로부터 객체 생성
public class StudentExample{
public static void main(String[] args){
Student s1 = new Student(); //학생 객체 s1 생성
System.out.println("s1변수가 Student 객체를 참조합니다.");
Student s2 = new Student(); //학생 객체 s2 생성
System.out.println("s2변수가 또 다른 Student 객체를 참조합니다.")
}
}
<컴파일>
stack | heap |
S1(서면) | (주소: 서면) studnet 객체 |
S2(해운대) | (주소: 해운대) student 객체 |
student 클래스는 하나지만 new연산자를 사용한 만큼 객체가 메모리에 생성된다.
이러한 객체들은 Student 클래스의 인스턴스들이다.
비록 같은 클래스로부터 생성되었지만,
각각의 Student 객체는 자신만의 고유 데이터를 가지면서 메모리에서 활동하게 된다.
s1과 s2가 참조하는 Student 객체는 완전히 독립된 서로 다른 객체이다.
<실행결과>
s1변수가 student 객체를 참조합니다.
s2변수가 또 다른 student 객체를 참조합니다.
라이브러리 클래스
[다른 클래스에서 이용할 목적으로 설계]
실행 클래스
[프로그램의 실행 진입점인 main() 메서드를 제공하는 역할]
'6. 클래스' 카테고리의 다른 글
6.5 클래스의 구성 멤버 (0) | 2020.04.13 |
---|---|
6.3 클래스 선언 (0) | 2020.04.13 |
6.2 객체와 클래스 (0) | 2020.04.13 |
6.1 객체지향 프로그래밍 (0) | 2020.04.13 |