什麼是多態
多態是面向對象的特性之一,從字面上理解,多態就是指一個對象在運行是會有多種形態,就比如可以說student是一個person,也可以說student是一個object。
我們來看一個經典的例子:
Service service=new ServiceImpl();
我們經常看到這樣的代碼,這就是多態的一種表現。
為什麼要多態
多態可以讓代碼更加靈活,再舉一個例子:
List<string> list=new ArrayList<>();
/<string>
這也是我們常寫的一句代碼,為什麼不把List換成ArrayList?
一個很大的原因就是要考慮到以後的情況,假設以後ArrayList已無法滿足我們軟件的需求,這時候可能需要一個和ArrayList相似的類來替代它,那麼如果我們直接面向具體的類進行編程,以後的可維護性肯定會變差,所以多態能使我們面向抽象進行編程,使代碼更加地靈活。
多態的缺點
那麼多態肯定會有它的缺點,那就是我們無法調用我們具體類的方法。什麼意思?舉個例子:
假設我們的Person類有一個speak方法,Student類是從Person類繼承過來的,它有一個額外的方法study。
那麼我們直接這樣:
Person student=new Student();
很明顯,這樣我們就失去了study這個方法。
閱讀更多 最後一個NPE 的文章