5-2. 클래스와 인스턴스

왱구·2023년 12월 11일

JAVA

목록 보기
11/17

1. 클래스 생성

클래스를 사용하기 위해서는 클래스를 생성하여야함
클래스가 생성된다는 것은 클래스를 실제 사용할 수 있도록 메모리공간(힙 메모리)을 할당받는다는 뜻
이렇게 실제로 사용할 수 있도록 생성된 클래스를 '인스턴스'라 함

1) 클래스 생성 시 사용되는 new 예약어

클래스자료형 변수이름 = new 생성자;
ex) Student studentLee = new Student( );



2. 인스턴스와 힙메모리

new Student( )를 선언하면 Student가 하나 생성됨
각 Student는 studentID, studentName 등의 멤버변수를 지님
이들 변수를 저장할 공간이 힙메모리
클래스 생성자를 하나 호출하면 인스턴스가 힙메모리에 생성됨

1) 한개의 인스턴스

Student studentLee = new Student( );
위와 같이 생성된 클래스를 studentLee변수에 대입하면
studentLee변수가 인스턴스가 저장된 메모리를 가리킴

지역변수 studentLee에 생성된 인스턴스를 대입하는것은
studentLee에 인스턴스가 생성된 힙 메모리의 주소를 대입한다는것과 같은의미

2) 두개의 인스턴스

Student studentLee = new Student( );
Student studentKim = new Student( );
생성된 두 인스턴스는 각각 다른 메모리 공간을 차지
studentLee.studentName과 studentKim.studentName은 다른값

3) 참조변수와 참조값

힙메모리에 생성된 인스턴스의 메모리주소는 참조변수에 저장됨 ex) reference.Student@58ceff1
여기에 나오는 주소값은 해시코드값이라고도 함
이 값은 자바 가상 머신에서 객체가 생성되었을 때 생성된 객체에 할당하는 가상주소값
studentLee를 참조변수, 주소값을 참조값이라 함



3. 생성자(constructor)

생성자의 역할은 클래스를 처음 만들 때 멤버 변수나 상수를 초기화함
생성자의 이름은 그 클래스의 이름과 같음
생성자는 상속되지 않으며 리턴값은 없다

1) 디폴트 생성자

하나의 클래스에는 반드시 적어도 하나 이상의 생성자가 존재함
프로그래머가 생성자를 기술하지 않으면 디폴트 생성자가 자동으로 생성됨
디폴트 생성자는 매개변수와 구현코드가 없음
만약 클래스에 매개변수가 있는 생성자를 추가하면 디폴트 생성자는 제공되지 않음

2) 생성자 오버로드

필요에 의해 생성자를 추가하여 하나의 클래스에 생성자가 두 개 이상 중복 정의 해야하는 경우 생성자 오버로드라고 함

4. 접근제어자

: 객체 지향 프로그램에서는 접근제어자 예약어를 사용해 클래스 내부의 변수나 메서드, 생성자에 대한 접근 권한을 지정할 수 있음

1) 문법

		  public int = a;
	      protected int  = b;
(default) int c = 3;
		  private int = d;
profile
늦깎이 애아빠 개발지망생

0개의 댓글