在Java面試中,多態是一個被問到的頻率很高的一個概念。多態整理如下:
一、什么是多態?
概念:同一操作作用於不同的對象,可以有不同的解釋,產生不同的執行結果,這就是多態性。簡單的說:就是用基類的引用指向子類的對象。
比如有一個父類superClass,它有2個子類subClass1,subClass2。superClass有一個方法 func(),兩個子類都重寫了這個方法。那么我們可以定義一個superClass的引用obj,讓它指向一個子類的對象,比如superClass obj = new subClass1();那么我們調用obj.func()方法時候,會進行動態綁定,也就是obj它的實際類型的func()方法,即subClass1的func()方法。同樣你寫superClass obj = new subClass2();obj.func()其實調用的是subClass2的func()方法。這種由於子類重寫父類方法,然后用父類引用指向子類對象,調用方法時候會進行動態綁定,這就是多態。多態對程序的擴展具有非常大的作用,比如你要再有一個subClass3,你需要改動的東西會少很多。
二、多態有什么好處?
- 應用程序不必為每一個派生類編寫功能調用,只需要對抽象基類進行處理即可。大大提高程序的可復用性。//繼承
- 派生類的功能可以被基類的方法或引用變量所調用,這叫向后兼容,可以提高可擴充性和可維護性。 //多態的真正作用