상위 클래스의 객체 호출
상위 클래스의 생성자 호출
공통적으로 모두 상위 클래스의 존재를 상정하며 상속관계를 전제로 함
class SuperClass {
int count = 20; // super.count
}
class SubClass extends SuperClass {
int count = 15; // this.count
void callNum() {
System.out.println("count = " + count);
System.out.println("this.count = " + this.count);
System.out.println("super.count = " + super.count);
}
}
public static void main(String[] args) {
SubClass subClassInstance = new SubClass();
subClassInstance.callNum();
}
count = 15
this.count = 15
super.count = 20
super키워드를 붙이지 않으면 자신이 속한 인스턴스 객체의 멤버를 먼저 참조함.
class Human {
Human() {
System.out.println("휴먼 클래스 생성자");
}
}
class Student extends Human { // Human 클래스로부터 상속
Student() {
super(); // Human 클래스의 생성자 호출
System.out.println("학생 클래스 생성자");
}
}
public static void main(String[] args) {
Student s = new Student();
}
휴먼 클래스 생성자
학생 클래스 생성자
super()메서드도 this()메서드처럼 생성자 안에서만 사용가능하고, 가장 첫 줄에 와야한다.
student 클래스에서 super()메서드로 상위클래스의 생성자를 호출했기 때문에 상위클래스의 생성자가 먼저 출력되고 하위클래스의 생성자가 출력됨.