Notice
Recent Posts
Recent Comments
«   2024/12   »
1 2 3 4 5 6 7
8 9 10 11 12 13 14
15 16 17 18 19 20 21
22 23 24 25 26 27 28
29 30 31
Archives
Today
Total
관리 메뉴

충분히 쌓여가는

상속(Inheritance) 본문

Java/객체지향

상속(Inheritance)

빌드이너프 2023. 6. 4. 23:00

상속(Inheritance)

기존의 클래스로 새로운 클래스를 작성하는 것(코드의 재사용)

두 클래스를 부모와 자식으로 관계를 맺어주는 것

class 자식클래스 extends 부모클래스 {
    // ...
}

 

class Parent { }
class Child extends Parent {
    // ...
}

 

 

자손은 조상의 모든 멤버를 상속받는다(생성자, 초기화블럭 제외)

자손의 멤버 개수는 조상보다 적을 수 없다(=같거나 많다)

class Parent {
    int age;
}

class Child extends Parent { }

 

 

자손의 변경은 조상에 영향을 미치지 않는다

class Parent {
    int age;
}

class Child extends Parent {
    void play() {
        System.out.println("Hello");
    }
}

 

코드

class Tv {
    boolean power; // 전원상태(on/off)
    int channel;	// 채널

    void power()       {   power = !power; }
    void channelUp()   {   ++channel;      }
    void channelDown() {   --channel;      }
}

class SmartTv extends Tv {  // CaptionTv는 Tv에 캡션(자막)을 보여주는 기능을 추가
    boolean caption;     // 캡션상태(on/off)
    void displayCaption(String text) {
        if (caption) {   // 캡션 상태가 on(true)일 때만 text를 보여 준다.
            System.out.println(text);
        }
    }
}

class Inheritance {
    public static void main(String args[]) {
        SmartTv stv = new SmartTv();
        stv.channel = 10;			// 조상 클래스로부터 상속받은 멤버
        stv.channelUp();			// 조상 클래스로부터 상속받은 멤버
        System.out.println(stv.channel);
        stv.displayCaption("Hello, World");
        stv.caption = true;	// 캡션(자막) 기능을 켠다.
        stv.displayCaption("Hello, World");
    }
}

 

'Java > 객체지향' 카테고리의 다른 글

상속이냐 포함이냐 (클래스간의 관계 설정)  (1) 2023.06.05
포함(Composite) 관계  (0) 2023.06.04
변수의 초기화  (0) 2023.06.01
생성자 this()와 참조변수 this  (0) 2023.06.01
생성자 Constructor  (0) 2023.06.01