Java三大特性之多態

概念:對於同一個指令(調用同一個名稱的方法),不一樣的方法給予不一樣的反應(不一樣的方法實現)spa

  例如:老師給學生上課,當老師說下課時,不一樣的學生有不一樣的反應,有的學生上廁所、有的學生喝水,但老師下發的指令只有一個code

  這就是多態,同一指令,不一樣的事物有不一樣的反應對象

規範(多態實現的前提):blog

  1.必需要有繼承關係繼承

  2.子類方法必須重寫父類方法class

  3.父類引用指向子類對象(同一引用類型,使用不一樣的實例而執行不一樣的操做)擴展

 1 public class DuoTai {
 2     public static void main(String[] args) {
 3         //父類引用指向子類對象
 4         Father father = new Child();
 5         /**
 6          * 因爲fun1在子類中沒有方法重寫,當調用fun1時只會調用父類中的fun1
 7          * 子類中重寫了fun2,當執行到父類中fun1中的fun2時,就會執行子類中重寫的fun2
 8          */
 9         father.fun1();//執行結果爲子類中的fun2
10     }
11 }
12 
13 class Father{
14     public void fun1(){
15         fun2();
16     }
17 
18     public void fun2(){
19         System.out.println("父類中的fun2");
20     }
21 }
22 
23 class Child extends Father{
24     //方法重載
25     public void fun1(int i){
26         System.out.println("子類中的fun1");
27     }
28     //方法重寫
29     public void fun2(){
30         System.out.println("子類中的fun2");
31     }
32 }

如上代碼能夠體現出引用

  當子類中沒有重寫父類中現有的方法時,多態調用的是父類中的方法方法

  當子類中重寫了父類中的方法時,多態調用的是子類中的方法static

多態的目的:

  爲了提升代碼的擴展性和維護性

  方便代碼邏輯的編寫

多態的兩種表現形式:

  1.父類做爲方法的參數

  2.父類做爲方法的返回值類型

引用類型的轉換與基本類型的轉換相似:

父類轉成子類時要進行強制轉換,但在強制轉化前必定要先判斷父類引用指向的子類對象究竟是誰,若沒法肯定,在運行過程當中可能出錯

子類轉成父類時,直接自動轉換,不須要進行任何的判斷

相關文章
相關標籤/搜索