談談我對多態的理解

什麼是多態

多態是面向對象的特性之一,從字面上理解,多態就是指一個對象在運行是會有多種形態,就比如可以說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這個方法。


分享到:


相關文章: