面向對象隨筆(多態)
阿新 • • 發佈:2017-12-03
pan 面向 使用 fun 方法 out 運行時 nbsp 付費
一、多態的前提
1.有繼承;
2.有重寫;
3.父類引用指向子類對象。
二、多態的作用
1.提高代碼的維護性;
2.提高代碼的擴展性;
三、多態的缺點
不能調用子類特有的方法
但是可以可以向下轉型,就可以調用子類的特有方法了
四、多態的實質
多態就是子類向上轉型為父類,可以調用父類中定義的所有屬性和方法,但是對於只存在與子類中的方法和屬性不能調用,若子類重寫了父類中的某些方法,在調用這些方法的時候,必定是使用子類中定義的這些方法
五、多態的種類
1.編譯時多態
2.運行時多態
六、多態的特點
1.編譯時參考父類,如果沒有會編譯失敗
2.運行時: 1)靜態方法,運行父類的靜態方法(靜態屬於類,不屬於對象,直接用類名.方法調用,與多態無關);
2)非靜態方法,運行子類中重寫的父類的方法。
代碼示例1:
1 public class Vip { 2 3 //定義一個付費VIP會員 4 public void vip() { 5 System.out.println("付費會員"); 6 } 7 } 8 9 public class BeggerVip extends Vip{ 10 11 //定義一個活動會員 12 public void vip() { 13 System.out.println("活動會員");14 } 15 } 16 17 public class Test { 18 19 public static void main(String[] args) { 20 //多態調用 21 Vip v = new BeggerVip(); 22 //輸出活動會員 23 v.vip(); 24 } 25 }
代碼示例2:
1 public class A { 2 3 int a = 1; 4 public void function() { 5 System.out.println(a);6 } 7 } 8 9 public class B extends A{ 10 11 int a = 2; 12 public void function() { 13 System.out.println(a); 14 } 15 } 16 17 public class Test { 18 19 public static void main(String[] args) { 20 //多態調用 21 A a = new B(); 22 //輸出2 23 a.function(); 24 } 25 }
面向對象隨筆(多態)