後臺回復「Java」即可獲贈Java學習資料
前面幾篇文章用Java帶大家一起了解Java的部分基礎知識,感興趣的小夥伴們可以去學習下了,一篇文章帶你了解Java類的設計和封裝及類成員的訪問控制、一篇文章帶你了解this關鍵字和單例模式、Java基礎入門篇——面向對象和類的定義,這篇文章帶大家一起學習下Java知識中的接口及其繼承知識,一起來看看吧。
1.假設實現一個動物發出的叫聲方法,我們知道不同的動物,它們的叫聲是不一樣的。當在方法中傳入一個參數類型,例如貓的叫聲、狗的叫聲。在同一個方法,當參數不同它們的執行結果各不相同,這就是多態。
2.多態是把子類對象賦給父類引用時,調用重寫的方法時,表示的是子類的行為。
3.怎麼實現多態例子
interface Fruit{ void info();}class Cherry implements Fruit{ double weight=66; public void info(){ System.out.println("我是一個櫻桃!"+"重量為:"+weight+"g"); }}class Apple implements Fruit{ double weight=250; public void info(){ System.out.println("我是一個蘋果!"+"重量為:"+weight+"g"); }}public class p30 { public static void main(String[] args) { Fruit f1=new Cherry(); Fruit f2=new Apple(); fruitInfo(f1); fruitInfo(f2);} public static void fruitInfo(Fruit f){ f.info(); }}運行的結果是:
我是一個櫻桃!重量為:66.0g我是一個蘋果!重量為:250.0g從上面代碼中,定義了一個Fruit接口,定義了抽象方法info()。定義Cherry類和Apple類實現Fruit接口,定義變量weight屬性和實現info()方法。「Fruit f1=new Cherry()、Fruit f2=new Apple()」實現子類對象賦給父類引用,調用fruitInfo()方法,父類引用了兩個子類對象分別傳入f1和f2參數。
二、對象類型轉換
1.子類對象是可以自動轉換成父類。
2.父類轉換成子類對象就需要強制轉換。
例如:
interface Fruit{ void info();}class Cherry implements Fruit{ double weight=66; public void info(){ System.out.println("我是一個櫻桃!"+"重量為:"+weight+"g");} void pro(){ System.out.println("產地:浙江"); }}public class p31 { public static void main(String[] args) { Fruit f1=new Cherry(); fruitInfo(f1);} public static void fruitInfo(Fruit f){ f.info(); f.pro(); }}運行的結果是:
從上面可以看出編譯出錯了,調用fruitInfo()方法傳入Cherry對象,方法參數是Fruit類型的,把Cherry的子類當作父類使用導致程序編譯出現錯誤,程序在運行到f.pro()這行代碼發現這個方法沒有定義。因為傳入的是Cherry類,在Cherry類中定義了pro()方法需要強制轉換才可以運行,就是把Fruit類型變量強制轉換成Cherry類型。
修改後代碼如下所示:
public static void fruitInfo(Fruit f){ Cherry f1=(Cherry)f; f1.info(); f1.pro();}再次運行的結果是:
三、instanceof關鍵字1.instanceof關鍵字作用
判斷一個實例對象是否屬於一個類,它的語法如下:
2.在進行引用類型轉換前先使用instanceof關鍵字判斷,例如:
if( f instanceof Cherry){ Cherry f1=(Cherry)f;}四、總結本文主要介紹了多態、對象類型轉換、instanceof關鍵字。
多態是子類對象賦給父類引用時,調用重寫的方法時,表示的是子類的行為。通過怎麼實現多態例子幫助理解這個用法。
對象類型轉換是子類對象是可以自動轉換成父類、父類轉換成子類對象就需要強制轉換。
instanceof關鍵字用來判斷一個實例對象是否屬於一個類,希望大家通過本文的學習,對你有所幫助!
------------------- End -------------------
往期精彩文章推薦:
歡迎大家點讚,留言,轉發,轉載,感謝大家的相伴與支持
想加入Java學習群請在後臺回復【入群】
萬水千山總是情,點個【在看】行不行