JAN's History

자바의 정석 - CH6 객체지향 언어 1 - 3 본문

자바

자바의 정석 - CH6 객체지향 언어 1 - 3

JANNNNNN 2023. 4. 7. 16:41

5. 생성자

생성자 : 인스턴스가 생성될 때마다 호출되는 '인스턴스 초기화 메서드'

Ex) Card c = new Card();

생성자의 이름은 클래스의 이름과 같아야 하며, 리턴값이 없다.

생성자 오류

*모든 클래스에는 반드시 하나 이상의 생성자가 있어야 한다.*

class 선언 후, 매개변수가 없을 시에는 기본 생성자를 추가해주지만

매개변수가 있는 생성자에서 기본 생성자가 없을 경우 에러가 난다.

 

this() Vs this

this() - 생성자, 같은 클래스의 다른 생성자를 호출할 때 사용

         - 다른 생성자 호출은 생성자의 첫 문장에서만 가능하다.

중복코드

중복 코드는 옳지 못하다. 코드의 재사용성을 높이기 위해 위와 같이 바꿔줘야한다.

 

this - 인스턴스 자신을 가리키는 참조변수. 인스턴스의 주소가 저장되어 있다.

       - 모든 인스턴스 메서드에 지역변수로 숨겨친 채로 존재한다.

지역변수 color/gearType/door와 인스턴스변수를 구별하기 위한 this 사용

변수가 같은 이름이므로 어떤 변수에 color를 넣는지 구분하기 위해 this를 사용한다.

this.를 사용했다는 것은 인스턴스 변수를 사용한다는 뜻이므로 위에 class 바로 밑에 있는 변수들을 말한다.

6. 변수의 초기화

지역 변수는(static- lv)는 수동 초기화를 해야한다.

=> 지역 변수는 생명주기가 짧기 때문에 매번 새롭게 초기화 해주는 것이 아니라 다른 메소드에서 사용하던 값을 덮어 쓰는 방식으로 사용하여 수동으로 초기화해줘야 한다.

 

멤버 변수는 (class -iv, vs) 자동 초기화 된다.

 - 명시적 초기화 : 대입 연산자를 사용(선언 시), 간단 초기화

 - 초기화 블럭 - {}안에 여러 문장을 넣어 초기화 (iv : {}, cv:static), 복잡한 초기화

 - 생성자 : 인스턴스 변수 초기화, 복잡한 초기화

 

- 클래스 변수 초기화 시점 : 클래스가 처음 메모리에 올라갈  한번

- 인스턴스 변수 초기화 시점 : 인스턴스가 생성될 때 마다