class 자식클래스 extends 부모클래스{
// ...
}
class Parent { }
class Child extends Parent {
// ...
}
public class EX7_1 {
public static void main(String[] args) {
Tv tv = new Tv();
tv.channel = 10;
tv.channelDown();
System.out.println(tv.channel);
SmartTv stv = new SmartTv();
stv.channel = 10;
stv.channelUp();
System.out.println(stv.channel);
stv.caption = true;
stv.displayCaption("안녕하세요");
}
}
class Tv{
boolean power;
int channel;
void power(){
power = !power;
}
void channelUp(){
++channel;
}
void channelDown(){
--channel;
}
}
class SmartTv extends Tv{
boolean caption;
void displayCaption(String text){
if(caption){
System.out.println(text);
}
}
}
Java는 단일 상속만을 허용한다.(C++은 다중 상속을 허용함)
class TvDVD extends Tv, DVD{ // error : 조상은 하나만 허용
// ...
}
인터페이스를 이용하면 클래스 간 충돌을 방지하면서 다중 상속과 같은 효과를 낼 수 있다.
인터페이스를 이용하지 않고 다중 상속의 효과를 내는 방법
class MyTv{
boolean power;
int channel;
void power(){power = !power;}
void channelUp(){ ++channel;}
void channelDown(){ --channel;}
}
class DVD{
boolean power;
void power(){power = !power;}
void play(){/* 내용 생략 */}
void stop(){/* 내용 생략 */}
void rew(){/* 내용 생략 */}
void ff(){/* 내용 생략 */}
}
class TvDVD extends Tv{
DVD dvd = new DVD();
void play(){ // 껍데기를 만들어주어 인스턴스 레벨에서 바로 사용할 수 있게 한다.
dvd.play();
}
void stop(){
dvd.stop();
}
void rew(){
dvd.rew();
}
void ff(){
dvd.ff();
}
}