기록장
생성자에 대해서 알려줄게 본문
생성자는 객체의 초기화를 담당해
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; // 앞이 필드 뒤가 매개변수
객체의 필드는 하나가 아니라 여러개인거 알지?
이 필드들을 생성자에서 초기화 한다면~
생성자의 매개 변수 수는 객체의 필드 수만큼 선언 되어야해
중요한건 몇 개의 필드만 매개 변수를 통해 초기화 되고
나머지 필드들은 필드 선언 시에 초기화하거나 생성자 내부에서
초기화 돼 아니면 객체 생성 후에 필드 값을 별도로 저장하기도 해~
'개발 > JAVA' 카테고리의 다른 글
정적 변수 코드 짜봤어~ 주의할 점도 알려 줄게 (0) | 2022.05.15 |
---|---|
메소드를 알려줄게 2 (0) | 2022.05.14 |
메소드를 말해줄게 (0) | 2022.05.14 |
생성자에 대해서 알려줄게2 (0) | 2022.05.12 |
필드 (0) | 2022.05.12 |