java基础之多态的详细解释_JAVA基础之多态
下面我為大家講解一下JAVA基礎之多態,希望大家喜歡。
多態就是事物存在的多種形態,比如你在大街上看見一只藏獒,你可以說這只藏獒真兇猛,也可以說這只狗真兇猛,還可以說這個動物真兇猛,以上三種說法其實都是指的這只藏獒。
在Java里面,也是存在多態的,只要全部符合下面這三種情況,就是多態
有繼承
有方法重寫
有父類引用指向子類對象
例如下面代碼就構成多態
定義一個Animal類
定義一個Cat類繼承Animal
定義一個Dog類繼承Animal
上面的三個類里面已經有繼承和方法重寫了,那么父類引用指向子類對象是什么?請看下面這段代碼:
定義一個測試類
靜態綁定和動態綁定
上面代碼中,a1是Animal類型的一個引用,指向的是其子類Cat的對象,這個就叫做父類引用指向子類對象。程序在編譯的時候a1被看做Animal類型,所以a1.eat()綁定的是Animal類中的eat()方法,這叫做靜態綁定,程序運行時,a1指向的是堆中的Cat對象,而在Cat中對eat()方法進行了重寫,所以在運行階段綁定的是Cat中的eat()方法,這叫做動態綁定。
強制類型轉換
上面代碼中子類向父類型進行轉換,是自動類型轉換,也叫做向上轉型。還有一種情況是父類向子類型轉換,是強制類型轉換,也叫向下轉型。下面的代碼演示了強制類型轉換
instanceof關鍵字
上面的代碼里面將一個指向Dog對象的Animal引用a2進行強制轉換成Cat類型時報出了ClassCastException類轉型錯誤,開發中要是想避免這種錯誤需要使用instanceof來判斷一下。
多態的優點
提高了程序的擴展性
降低了代碼之間的耦合
請看下面示例:
新建一個Car類
創建一個Benz類繼承Car
創建一個BMW類繼承Car
創建一個Person類用來開車
創建一個測試類
在工作當中盡量面向抽象編程,不要面向具體編程。
此上就是我對多態的詳細解釋,感謝大家喜歡。希望大家多多糾錯。
總結
以上是生活随笔為你收集整理的java基础之多态的详细解释_JAVA基础之多态的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: 王者荣耀怎么换头像
- 下一篇: java安卓的xml布局,android