1. 程式人生 > >面向對象隨筆(多態)

面向對象隨筆(多態)

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 }

面向對象隨筆(多態)