java 多重繼承


生活中有沒有這樣一種例子,有一樣東西既是一種東西,又可以是另一種東西,比如平板電腦,它既可以實現手機的功能,又可以實現電腦的功能,這正好就體現了多重繼承了。
先來聲明一個手機的抽象類

abstract class Phone{
	abstract void call();
	abstract void watchMovie();
	abstract void playGames();
}

然后我們再來聲明一個電腦的抽象類

abstract class PC{
	abstract void writeProgram();
	abstract void playGames();
	abstract void chatWithFriend();
}

電腦上可以玩游戲,寫軟件,和朋友聊天什么的
那么我們再來創建一個平板電腦的類,那平板電腦可以通過一種什么樣的方式來實現同時繼承這兩個類的方法呢?
我們可以通過內部類來實現它

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
由於內部類是可以訪問到外部類的所有的方法的,所以,這里我們創建一個內部類的對象的話,實際上也可以看作是在創建一個繼承兩個類的類,也就是偽多重繼承。

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();
	}
}

這樣的話,就能實現多重繼承了,實際上我們也是在操控內部類。


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM