기록장

생성자에 대해서 알려줄게 본문

개발/JAVA

생성자에 대해서 알려줄게

HJJJJJ 2022. 5. 12. 21:38
728x90

생성자는 객체의 초기화를 담당해 

new연산자로 클래스로부터 객체를 호출할때 사용하지! 

 

객체 초기화란 

필드를 초기화, 메소드를 호출해서

객체를 사용할 준비를 하는 걸 말해!

 

모든 클래스에 존재하고 없으면 생성자가 자동 추가 돼

 


기본생성자 

모든 클래스에 반드시 존재하고

생략하면 컴파일러가 기본 생성자를 바이트 코드에 자동추가해

 


생성자 선언으로 하려면 

클래스(매개변수선언, ...) {

//객체 초기화코드

}

이렇게 하면돼 

 

메소드랑 비슷하지만 리턴타입이 없고 클래스 이름이랑 동일해~ 

 

생성자 블록에는 객체 초기화코드가 작성되는데 

필드 초기화값을 저장하거나 메소드를 호출해 이게 객체 사용 준비단계인거지

-> 일단 자세한건 뒤에 알아보장 넘어가 

 

 


필드 초기화

클래스로 부터 객체가 생성될 때

초기값 자동설정말고 

다른 값으로 초기화 하는 방법 두개가 있어

 

1. 필드를 선언할 때 초기값

2 생성자에서 초기값

 

필드를 선언할때 초기값을 주면 동일한 클래스로 부터

생성되는 객체들은 모두~ 같은 값이얌 

아 물론 객체 생성 후 초기값 변경 가능해

 

근데 

주민번호, 이름 이런건

첨부터 값이 다 달라야 편하겠지? 

이럴때 생성 시점에서 다양한 값을 가지면 돼

public class Korean{
//필드
String nation = "대한민국";
String name;
String ssn;

//생성자
Public Korean(String n, String s){
name = n;
ssn =s;
}
}

 

여기 보면 생성자의 매개 변수 이름은 각각 n과 s를 사용했지? 

일반적으로 필드와 동일한 이름을 갖는 매개 변수를 사용한ㄷㅔ

근데 이 경우는 필드와 매개 변수 이름이 동일해서 생성자 내부에서

해당 필드를 접근 할 수 없거든? 왜냐면 동일한 이름의 매개 변수가 사용 우선순위가 높거든

해결 방법은 앞에 this를 붙이면 돼 

this는 객체 자신의 참조야 -> 우리가 우리 자신을 '나'라고 하는 것처럼

this 는 객체가 객체 자신을 부를떄 this라고 한대

-? this.필드는 this라는 참조 변수로 필드를 사용하는거랑 동일한거지 

 

즉 저걸 수정하면 

 

public Korean(String name, String ssn){
 this.name = name; //처음 네임이 필드 뒤에 네임이 매개 변수
 
 this.ssn = ssn; // 앞이 필드 뒤가 매개변수

 

객체의 필드는 하나가 아니라 여러개인거 알지?

이 필드들을 생성자에서 초기화 한다면~

생성자의 매개 변수 수는 객체의 필드 수만큼 선언 되어야해

 

중요한건 몇 개의 필드만 매개 변수를 통해 초기화 되고 

나머지 필드들은 필드 선언 시에 초기화하거나 생성자 내부에서

초기화 돼 아니면 객체 생성 후에 필드 값을 별도로 저장하기도 해~

728x90

'개발 > JAVA' 카테고리의 다른 글

정적 변수 코드 짜봤어~ 주의할 점도 알려 줄게  (0) 2022.05.15
메소드를 알려줄게 2  (0) 2022.05.14
메소드를 말해줄게  (0) 2022.05.14
생성자에 대해서 알려줄게2  (0) 2022.05.12
필드  (0) 2022.05.12
Comments