충분히 쌓여가는
상속(Inheritance) 본문
상속(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 |