본문 바로가기
(혼) (공) (자)

상속-Super

by 만석이 2024. 1. 12.
부모클래스로부터 상속받은 필드나 메서드를 자식 클래스에서 참조하는데 사용하는 참조변수이며
자식클래스 실행시 부모클래스 먼저 실행이된다. 즉 Super가 생략되어있다는것

하지만 부모 생성자가 매개변수라면 Super을 생략할수없다.

 

 

바로 예제를 보자

public class Parent {

public Parent(int n) {
System.out.println("부모(Parent)생성자 호출"+n);
}


public int result(int n){
return n;

}

}


=====================

public class Child extends Parent{

public Child(int n) {
super(n); //부모클래스의 생성자(생략가능)
System.out.println("자식(child)생성자 호출"+(n+1));
}

@Override
public int result(int n) {
//super.result():부모클래스의 result()메서드 호출
System.out.println("자식(child)생성자 호출");

return 150;

}
}

=====================


public class SuperMain {
public static void main(String[] args) {

Child c1 = new Child(5);

}
}

 

 

Parent 클래스는 자신의 매개변수 생성자를 만들고 출력문을 만들어주었다.

 

Child 클래스는 Parent 클래스를 상속받는데 Parent 생성자는 매개변수를 받기때문에 super을 써서 입력받은 값을

Parent 클래스의 result 메서드에 넣어준다.

즉 매개변수가 없을때는 입력받는게 없어서 super()을 써주지 않아도되었지만 실제로는 자바가 자동으로 써준것이다. 

 

정리하면 매개변수를 사용하는 부모가 있다면 Super()을 사용해야하며 사용시 main에서 자식클래스를 호출해도 

부모클래스의 생성자가 제일먼저 실행된다는것이다.

 

그래서 위 코드의 결과값은

부모(Parent)생성자 호출5

자식(child)생성자 호출6

 

이렇게 출력이된다.(순서확인)

 

 

'(혼) (공) (자)' 카테고리의 다른 글

다중 생성자  (0) 2024.01.12
n차상속  (0) 2024.01.12
Static  (0) 2024.01.12
객체지향-오버로딩  (0) 2024.01.12
상속-오버라이딩  (0) 2024.01.12