java 多重繼承
生活中有沒有這樣一種例子,有一樣東西既是一種東西,又可以是另一種東西,比如平板電腦,它既可以實現手機的功能,又可以實現電腦的功能,這正好就體現了多重繼承了。
先來聲明一個(ge)手機的(de)抽象(xiang)類
abstract class Phone{
abstract void call();
abstract void watchMovie();
abstract void playGames();
}
然(ran)后我(wo)們(men)再(zai)來(lai)聲(sheng)明一個電腦的抽象類
abstract class PC{
abstract void writeProgram();
abstract void playGames();
abstract void chatWithFriend();
}
電腦上可以玩游戲,寫軟件,和朋友聊天什么的
那么我們再來創建一個平板電腦的類,那平板電腦可以通過一種什么樣的方式來實現同時繼承這兩個類的方法呢?
我(wo)們可以通過(guo)內部類來(lai)實現它
class OuterPanelComputer extends Phone{
@Override
public void call() {
// TODO Auto-generated method stub
System.out.println("call");
}
@Override
public void watchMovie() {
// TODO Auto-generated method stub
System.out.println("watchMovie");
}
@Override
public void playGames() {
// TODO Auto-generated method stub
System.out.println("playGames");
}
class PanelComputer extends PC{
@Override
public void writeProgram() {
// TODO Auto-generated method stub
System.out.println("writeProgram");
}
@Override
public void playGames() {
// TODO Auto-generated method stub
System.out.println("playGames");
}
@Override
public void chatWithFriend() {
// TODO Auto-generated method stub
System.out.println("chatWithFriend");
}
public void call() {
// TODO Auto-generated method stub
OuterPanelComputer.this.call();
}
public void watchMovie() {
// TODO Auto-generated method stub
OuterPanelComputer.this.watchMovie();
}
}
}
注意這里內部類在復寫的call和watchmovie方法里調用了外部類的call 和watchmovie
由于內部類(lei)是(shi)(shi)可以訪(fang)問到外部類(lei)的(de)(de)所有的(de)(de)方(fang)法(fa)的(de)(de),所以,這(zhe)里我們創建(jian)一個內部類(lei)的(de)(de)對象的(de)(de)話(hua),實際上也(ye)可以看作是(shi)(shi)在創建(jian)一個繼(ji)承兩個類(lei)的(de)(de)類(lei),也(ye)就是(shi)(shi)偽多重繼(ji)承。
public static void main(String[] args) {
// TODO Auto-generated method stub
OuterPanelComputer outerpanelcomputer = new OuterPanelComputer();
OuterPanelComputer.PanelComputer panelcomputer = outerpanelcomputer.new PanelComputer();
panelcomputer.chatWithFriend();
panelcomputer.playGames();
panelcomputer.watchMovie();
panelcomputer.call();
panelcomputer.writeProgram();
}
}
這樣的話,就能實現多重繼承了,實際(ji)上(shang)我們也是在操控內部類(lei)。
