프로그램이 부모를 선택한다고 해서 '음 프로그램은 조금 위아래가 없군' 이라고 생각했지만... 역시 부모 없는 자식이 없을 수 없다.
때문에 자식 객체를 생성하게 되면 부모 객체가 먼저 생성된 후 다음 자식 객체가 생성된다.
부모 생성자는 자식 생성자의 맨 첫 줄에서 호출된다.
public SmartPhone() {
super(); // 부모 생성자 호출 (매개변수가 없으면 이런 식으로 써주면 된다.)
}
부모 클래스에서 생성자가 명시적으로 선언되지 않았다면 super()
를 통해서 부모의 기본 생성자를 호출한다.
public SmartPhone(String model, String color) {
super(model, color); //매개변수를 여기서 바로 넣어줘도 된다.
}
직접 자식 생성자를 선언하고 명시적으로 부모 생성자를 호출할 땐 매개 변수를 바로 넣어주면 된다. super(매개값, ...)
매개값 타입과 일치하는 부모 생성자를 호출한다.
만일! 일치하는 부모 생성자가 없을 경우엔 컴파일 오류가 발생한다. 주의.
public class People {
public String name;
public String ssn;
public People(String name, String ssn) {
this.name = name;
this.ssn = ssn;
}
}
public class Student extends People {
public int studentNo;
public Student(String name, String ssn, int studentNo) {
super(name, ssn); // 부모 생성자를 호출한다.
this.studentNo = studentNo;
}
}
public class StudentEx {
public static void main(String[] args) {
Student student = new Student("이상해씨", "123456-1234567", 1);
System.out.println(student.name); // 부모에게 물려받은 필드 출력
System.out.println(student.ssn);
System.out.println(student.studentNo);
}
}
[출력 결과]
꼬북이
123456-1234567
1