多型,就是多種狀態的意思。在面嚮物件語言中,介面的多種不同的實現方式為多型,一個方法(名)多種實現,也是多型。多型可消除型別之間的耦合關係,擁有可替換性、 可擴充性、靈活性和簡化程式碼的優點。
23.1 介面多型在Java中,介面多型有三個必要條件:繼承、重寫和基類引用指向派生類物件(引用還是指向基類),介面多型的好處:可以使程式有良好的擴充套件,並可以對所有類的物件進行通用處理。實現或改變父類方法的實現,在Java中叫作重寫。
一個用於繪製圖形的介面,提供一個繪製的方法,呼叫這個方法調,可以畫圓,可以畫方塊,還可以畫線條等。
public interface Shape { void draw();}
實現Shape繪製圖形介面,實現畫個圓。
//實現Shape介面,畫個圓public class Circle implements Shape { public void draw() { System.out.println("畫個圓."); }}
實現Shape繪製圖形介面,實現畫個方塊。
//實現Shape介面,畫個方塊public class Square implements Shape { public void draw() { System.out.println("畫個方."); }}
在呼叫的地方,面向的是介面Shape。如果想實現畫圓,就用Circle,想實現畫方塊,就用Square。改變Circle和Square的實現細節,呼叫的地方,不需要改變,這就是松耦合的表現.
/* * Java多型講解 */public class Main { public static void main(String[] args) { Shape shape = new Circle(); //畫個圓 shape.draw(); shape = new Square(); //畫個方塊 shape.draw(); }}
輸出結果
畫個圓.畫個方.
23.2 方法多型方法多型,在一個類裡面,方法名字相同,而引數不同,返回型別可以相同也可以不同。專業名稱叫作過載(overloading)。每個過載的方法(或者建構函式)都必須有一個獨一無二的引數型別列表。
/* * Java多型講解 */public class MathUtil { public void add(int a, int b) { System.out.println("兩個整數之和為:" + (a + b)); } public void add(double a, double b) { System.out.println("兩個浮點數之和:" + (a + b)); } public void add(int a, double b) { System.out.println("一個整數和一個浮點數之和:" + (a + b)); } public static void main(String[] args) { MathUtil math = new MathUtil(); math.add(10, 10); math.add(10.25, 20.51); math.add(10, 20.51); }}
輸出結果
兩個整數之和為:20
兩個浮點數之和:30.76
一個整數和一個浮點數之和:30.51
發現沒,一樣是呼叫add方法,結果卻是不一樣的,這就是多型的優點。如果我提供這些教程,你卻還不好好學的話,那不是多型,那叫變態。
#Java##APP##程式設計師##Web##Spring#
最新評論