1、多態的分類:java
一、引用多態:父類的引用能夠指向本類的對象,父類引用能夠指向子類對象,子類引用不能指向父類對象;安全
二、方法多態:建立本類對象時,調用的方法爲本類方法;建立子類對象時,調用的方法爲子類重寫的方法或者繼承的方法;spa
三、若是子類裏有一個獨有的方法,並非從父類中繼承過來的,那麼就不能經過父類的引用調用子類獨有的方法。設計
2、引用類型轉換:code
一、向上類型轉換(隱式/自動類型轉換),是小類型到大類型的轉換,不存在風險;
orm
二、向下類型轉換(強制類型轉換),是大類型到小類型的轉換,存在風險;對象
三、instanceof運算符,來解決引用對象的類型,避免類型轉換的安全性問題;繼承
Dog dog=new Dog(); Animal animal =dog;//向上類型轉換 Dog dog2=(Dog)animal; Cat cat =(Cat)animal;//一、編譯時不會報錯二、實際開闢的內存空間爲dog類型,會報錯
instanceof運算符,能夠判斷一個引用是不是某個類型或者是某個類型的子類型,返回一個布爾值;
接口
Dog dog=new Dog(); Animal animal =dog;//向上類型轉換 Dog dog2=(Dog)animal; if(animal instanceof Cat){ Cat cat =(Cat)animal; }else{ System.out.println("沒法進行類型轉換"); }
3、抽象類abstruct:
內存
一、某些狀況下,某個父類只是知道其子類應該包含怎樣的方法,可是沒法準確知道這些子類如何實現這些方法。抽象類是約束子類具備哪些特徵,即關注子類應該具備那些方法,而並不關注子類如何去實現;
二、從多個具備相同特徵的類中抽象出一個抽象類,以這個抽象類做爲子類的模板,從而避免了子類設計的隨意性。
4、接口interface:
一、接口能夠理解爲一個特殊的類,由全局的常量和公共的抽象方法組成;
二、類是一種具體的實現提,而接口定義了某一批類所須要遵照的規範,接口不關心這些類的內部數據,也不關心這些類裏方法的實現細節,他只規定這些類裏必須提供某些方法。接口實際上是一個規範,是用來約束類的;
三、接口是能夠多繼承的,類只能單繼承。接口能夠彌補類單繼承的不足;
四、若是要繼承父類,繼承的接口必須在實現接口以前。