lesson Eleven 2018-04-30 22:34:59 多態性 1.多態性指的是什麼? 多態性,可以理解為一個事物的多種表現形態。 1.1方法的重載與重寫 1.2子類對像的多態性 2.子類對像的多態性使用的前提 2.1要有類的繼承 2.2要有子類對父類方法的重寫 3.程式運行分為編譯狀態 ...
lesson Eleven 2018-04-30 22:34:59
多態性
1.多態性指的是什麼? 多態性,可以理解為一個事物的多種表現形態。
1.1方法的重載與重寫
1.2子類對像的多態性
2.子類對像的多態性使用的前提
2.1要有類的繼承
2.2要有子類對父類方法的重寫
3.程式運行分為編譯狀態和運行狀態
如:Person p = new Person();
3.1對於多態性來說,編譯時,檢測等號左邊,將此引用變數理解為父類的類型。
3.2對於多態性來說,運行時,檢測等號右邊,關註於真正對像的實體,子類的對像。執行的方法
1 public class Person { 2 private String name; 3 private int age; 4 int id = 1001; 5 6 public String getName() { 7 return name; 8 } 9 10 public void setName(String name) { 11 this.name = name; 12 } 13 14 public int getAge() { 15 return age; 16 } 17 18 public void setAge(int age) { 19 this.age = age; 20 } 21 22 public void eat() { 23 System.out.println("eating"); 24 } 25 26 public void walk() { 27 System.out.println("walking"); 28 } 29 30 }父類
4.虛擬方法調用:通過父類的引用指向子類的對像實體,當調用方法時,實際執行的是子類重寫父類的方法
5.父類引用指向子類實體後,不可以調用子類獨有的方法和屬性。
6.子類對像的多態性並不適用於屬性。
1 public class man extends Person { 2 3 int id = 1002; 4 5 public void eat() { 6 System.out.println("man is eaeting!"); 7 } 8 9 public void walk() { 10 System.out.println("man is walking"); 11 } 12 13 public void playGame() { 14 System.out.println("man is playing games"); 15 } 16 }子類
1 public static void main(String[] args) { 2 Person p = new Person(); 3 p.eat(); 4 p.walk(); 5 System.out.println(); 6 7 man m = new man(); 8 m.eat(); 9 m.walk(); 10 System.out.println(); 11 12 //子類對像的多態性:父類的引用指向子類對像 13 Person p1 = new man(); 14 //虛擬方法調用:通過父類的引用指向子類的對像實體,當調用方法時,實際執行的是子類重寫父類的方法 15 p1.walk(); 16 p1.eat(); 17 System.out.println(p.id); 18 // p1.playGame(); 19 // 不可以調用子類獨有的方法和屬性。 20 }主方法