관리 메뉴

사적공간

상속과 생성자/super( ) 본문

KNOU_CS/JAVA

상속과 생성자/super( )

2sac 2024. 4. 16. 14:14

서브 클래스의 객체를 생성하면 서브 클래스의 생성자를 실행하기 전 슈퍼 클래스에서 매개변수가 없는 기본 생성자가 먼저 호출된다. 

 

super(b)는 슈퍼클래스의 CSupert(double a)를 호출하기 위한 메소드임. (명시적) 

 

class CSuper { 
    public CSuper() {System.out.println("super non-argu");} // 슈퍼 클래스의 기본생성자 
    public CSuper(double a) {System.out.println("super argu");} 
}
class CSub extends CSuper {
    public CSub() {System.out.println("sub non-argu\n");} // super();가 생략된 것 
    public CSub(int a) {System.out.println("sub argu\n");} // super();가 생략된 것 
    public CSub(double b) {super(b); System.out.println("sub argu2\n");}  // 명시적으로 슈퍼클래스의 매개변수 있는 생성자 호출 
    }
    
public class Main { 
    public static void main(String[] args) { 
        CSub sub1 = new CSub();
        CSub sub2 = new CSub(10);
        CSub sub3 = new CSub(10.0);
    }
}

super non-argu
sub non-argu

super non-argu
sub argu

super argu
sub argu2