本文實例講述了Java面向對象程序設計多態性。分享給大家供大家參考,具體如下:
多態:具有表現多種形態的能力的特征(同一個實現接口,使用不同的實例而執行不同的操作)
實現多態的優點:為了方便統一調用!
實現多態的三種方式!
1. 子類到父類的轉換:
例:
1
2
3
4
5
|
Dog dog= new Dog( "歐歐" , "雪納瑞" ); dog.eat(); Pet pet= new Dog( "歐歐" , "雪納瑞" ); //子類到父類的轉換 pet.eat(); pet.catchingFlyDisc(); //編譯錯誤,父類的引用無法調用子類的特殊方法 |
規則:
① 將一個父類的引用指向一個子類對象,稱為向上轉型,自動進行類型轉換
② 此時通過父類引用變量調用的方法是子類覆蓋或繼承父類的方法,不是父類的方法.
③ 此時通過父類引用變量無法調用子類特有的方法!
2. 使用父類作為方法形參實現多態
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
|
public class Master { private String name = "" ; private int money = 0 ; public Master(String name, int money) { this .name = name; this .money = money; } public void feed(Pet pet) { pet.eat(); } public void feed(Dog dog) { dog.eat(); } public void feed(Penguin pen) { pen.eat(); } } public class Test() { public static void main(String[] args) { Master master = new Master( "王先生" , 100 ); Pet pet = new Dog( "歐歐" , "雪納瑞" ); master.feed(pet); } } |
3. 使用父類作為方法返回值實現多態
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
|
public class Master{ private String name = "" ; private int money = 0 ; public Pet getPet( int id) { Pet pet= null ; if (id== 1 ) { pet= new Dog( "歐歐" , "雪納瑞" ) } else if (id== 2 ) { pet= new Penguin( "娜娜" , "帝企鵝" ); } return pet; } } |
注意:
① 繼承的存在(繼承是多態的基礎,沒有繼承就沒有多態)
② 子類重寫父類的方法
③ 父類引用變量指向子類對象
希望本文所述對大家java程序設計有所幫助。
原文鏈接:https://www.cnblogs.com/S2223/p/5531729.html