백엔드 수업 #07 상속 - 03 부모 생성자 호출

sookyoung.k·2022년 11월 28일
0

프로그램이 부모를 선택한다고 해서 '음 프로그램은 조금 위아래가 없군' 이라고 생각했지만... 역시 부모 없는 자식이 없을 수 없다.

때문에 자식 객체를 생성하게 되면 부모 객체가 먼저 생성된 후 다음 자식 객체가 생성된다.

부모 생성자자식 생성자의 맨 첫 줄에서 호출된다.

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

profile
영차영차 😎

0개의 댓글