생성자(Constructor)
객체가 생성될때 자동으로 호출되는 특수 목적의 메소드로 객체의 초기화를 위해 사용
- 생성자 메서드의 이름은 클래스 이름과 같아야함
- 생성자는 객체가 생성될 때 자동으로 한번 호출됨
- 클래스에 최소 1개는 존재해야하고, 생성자를 작성하지 않았다면 기본 default 생성자를 자동으로 생성
- 생성자 오버로딩 가능 : 하나의 클래스 안에 같은 이름의 생성자 메서드가 존재할 수 있지만 매개변수가 달라야 함
class 전사 {
String 이름;
int 나이;
전사() { // 생성자
이름 = 전사;
나이 = 20;
}
전사(String 이름, int 나이) { // 생성자 오버로딩
}
}
생성자 연쇄 호출
모든 class는 Object클래스의 자식클래스. 모든 클래스는 default 생성자를 가지고 있다.
모든 생성자는 부모 생성자에게 먼저 넘겨주어 가장 조상의 생성자부터 실행된다.
super메서드의 명시적 호출
super();
는 부모 클래스의 생성자를 호출하는 메서드이다. 반드시 자식클래스의 생성자 안에 써야하고, 반드시 첫 줄에 써야 한다.
- 사람클래스 default 생성자 에 super메소드 기본적으로 존재
- 사람 클래스가 호출되면 사람의
default 생성자
가 자동으로 부모클래스인 동물클래스의 생성자 호출 - 동물클래스의init()
동작 - 메서드 오버라이딩 덕분에 사람 클래스의
init()
에 우선순위가 있어서 사람이 초기화 됩니다. 문구 출력
public class Main {
public static void main(String[] args) {
new 사람();
}
}
class 동물 {
동물(String 이름) {
System.out.println("동물(String 이름) 실행됨!");
System.out.println("이름 : " + 이름);
}
동물(String 이름, int 나이) {
System.out.println("동물(String 이름, int 나이) 실행됨!");
System.out.println("이름 : " + 이름);
System.out.println("나이 : " + 나이);
}
}
class 사람 extends 동물 {
사람() {
super("홍길동", 22);
}
}
'Java' 카테고리의 다른 글
[Java] 접근제한자(private) (0) | 2023.02.24 |
---|---|
[Java] 인터페이스 (0) | 2023.02.24 |
[Java] ArrayList 클래스와 ArrayList 메서드 (0) | 2023.02.23 |
[Java] Arrays 클래스와 Arrays 메서드 (0) | 2023.02.23 |
[Java] 상속과 구성 (0) | 2023.02.23 |