java之多態詳解


前言

什么叫多態?多態就是一種事物可以有多種表現形式

多態三要素

1.被動方必須有繼承關系

2.子類一般都要重寫父類方法

3.必須將主動方的功能函數的參數設置為 被動方父類的類型

 

舉個例子司機開車

 假如說司機會開汽車  我們需要定義個汽車的類  然后在司機類中添加會開汽車的的方法
假如說司機會開卡車 我們需要再定義一個卡車的類  然后在司機類中添加會開卡車的方法下面看下傳統的調用方式  代碼如下:

class Car
{
	private String name;

	//無參 構造方法
	public Car(){}
	// 有參構造方法
	public Car(String name){
		this.name = name;
	}
	public void setName(String name){
		this.name = name;
	}
	public String getName(){
		return this.name;
	}
	public void run(){}
}

class Bus extends Car
{
	public Bus(){}
	public Bus(String name){
		super(name);
	}
	public void run(){
		System.out.println("公交車在跑");
	}
}

class SmallCar extends Car
{
	public SmallCar(){}
	public SmallCar(String name){
		super(name);
	}
	public void run(){
		System.out.println("小轎車在跑");
	}
}

class Drivers
{
	//假如司機會開公交車
	public void driverBus(Bus b){
		b.run();
	}

	//假如司機會開小轎車
	public void driverSmallCar(SmallCar smcar){
		smcar.run();
	}
}



class  TestDt
{
	public static void main(String[] args) 
	{
		Drivers d = new Drivers();
		
		//司機開公交車
		d.driverBus(new Bus("公交車"));
		d.driverSmallCar(new SmallCar("小轎車"));
	}
}

 正如上面的列子 在添加司機開其他的車 就會重復上面的行為 缺點是 擴展性比較差,后期代碼維護困難。

然后我們用多態的寫法優化上述例子 代碼如下:

class Car
{
	private String name;

	//無參 構造方法
	public Car(){}
	// 有參構造方法
	public Car(String name){
		this.name = name;
	}
	public void setName(String name){
		this.name = name;
	}
	public String getName(){
		return this.name;
	}
	public void run(){}
}

class Bus extends Car
{
	public Bus(){}
	public Bus(String name){
		super(name);
	}
	public void run(){
		System.out.println("公交車在跑");
	}
}

class SmallCar extends Car
{
	public SmallCar(){}
	public SmallCar(String name){
		super(name);
	}
	public void run(){
		System.out.println("小轎車在跑");
	}
}

class Drivers
{
	public void driverCar(Car car){
		car.run();
	}
}



class  TestDt
{
	public static void main(String[] args) 
	{
		Drivers d = new Drivers();
		
		d.driverCar(new Bus("公交車"));
		d.driverCar(new SmallCar("小轎車"));
	}
}

 比較第一種寫法  假如司機還會開其他的車 只需要添加會開這種車的類就行  司機類不需要再添加其它功能方法 。代碼簡介  后期維護比較方便  這種編寫多態的形式也叫向上轉型。

但是要想調用子類獨有的方法必須向下轉型才能調用

 


免責聲明!

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



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