1. 程式人生 > 其它 >maven dependency 排除依賴jar或者指定類

maven dependency 排除依賴jar或者指定類

技術標籤:Javajava多型

多型的基本概念

多型:同一種事物表現出來的多種形態。

多型語法格式

格式為:父類型別的引用指向子類型別的物件。如下所示

Person person=new Worker();

多型的特點

(1)當父類型別的引用指向子類型別的物件時,可以直接訪問父類獨有的方法。
(2)當父類型別的引用指向子類型別的物件時,無法直接訪問子類獨有的方法,但可以通過強制型別轉換訪問。
(3)對於父子類都有的非靜態方法,編輯階段呼叫父類的方法,執行階段呼叫子類的方法(動態繫結)。
(4)對於父子類都有的靜態方法,編譯和執行階段都呼叫父類的靜態方法。

引用資料型別的轉換

引用資料型別之間的轉換有兩種,一是自動型別轉換,二是強制型別轉換。自動型別轉換是指由小轉大,由子類轉換為父類,也稱作向上轉換。強制型別轉換是指由大轉小,由父類轉換為子類,也稱作向下轉換或者顯示轉換(因需加上需轉換的型別)。如下所示

Worker w=new Worker();
Person p=w;//自動型別的轉換
Person p=new Worker();
((Worker)p).work();//強制型別轉換,work()是Worker獨有的方法

強轉的注意事項

(1)當引用變數強轉為非指向物件型別的物件時,編譯通過,執行時會出現型別轉換異常(ClassCastException)。例如:

Person p=new Worker();//Worker,Dancer繼承自Person類
((Dancer)p).dance();//強轉為非指向物件的型別,出現異常

(2)為了避免該錯誤的放生,進行轉換前可通過 if(引用變數 instanceof 資料型別)判斷能否進行強轉。例如:

if(p instanceof Dancer)
	((Dancer)p).dance();
else
	System.out.Println("型別錯誤,無法進行強壯");

多型的實際意義

意義:多型的意義在於遮蔽不同子類的差異性實現通用的程式設計帶來不同的效果。例如,通過多型實現一個方法可將引數物件的特徵打印出來,其中引數物件可以是不同的子類物件。
先定義Worker,Dancer類繼承自Person類

public  class Person {
    public  void speak(){
        System.out.println("我是Person"
); } }
public class Worker extends Person{
    @Override
    public void speak() {//重寫父類方法
        System.out.println("我是一個Worker");
    }
}
public class Dancer extends Person{
    @Override
    public void speak() {//重寫父類方法
        System.out.println("我是一個Dancer");
    }
}

最後是測試類

public class PersonTest {
    public static void speak(Person p){
        p.speak();
    }
    public static void main(String[] args) {
        //將不同子類物件作為形參
        PersonTest.speak(new Worker());
        PersonTest.speak(new Dancer());
    }
}

執行結果如下
在這裡插入圖片描述