一,封裝:
我們可以把世界上任何一個東西都看作為一個對象,那麼我們這裡以人為例,一個人就肯定是一個對象了。
那麼封裝是什麼呢?
封裝就是這個人要完成一件事情,他所需要的任何工具都帶在了自己的身上,所需要的技術也都裝在了自己的腦子裡了。不需要借助於別人的力量就能完成這一件事情。這個有什麼好處呢?好處就是如果我要吩咐這個人去完成一件事情,我不需要知道他是怎麼完成的,也不需要協助他去完成,只要知道結果,他完成了就OK了。至於他是先干什麼後干什麼我不干涉,這有助於他更快更好的干好這件事情,我自己也省事。
書面的解釋如下:
每個對象都包含它能進行操作所需要的所有信息,因此對象不必依賴其它的對象來完成自己的操作。
二,繼承:
還以為人為例,我們每個人都會有一些共同的特征,都要做一些相同的事情。比如:人都有一個腦袋,二只胳膊,二條腳,這是共同的特征。都要吃飯,喝水,這是都要做的相同的事情。那麼如果我們現在要聲明很多個人,每個人都會有這些特征,那我不是要寫很多重復的代碼?所以我們可以先建一個人的父類,這個父類不代表一個具體的人,只是一個擁有人所有共同特性的虛擬的人。下次我 們要實例化一個具體的人的時候,只需要將這個人繼承上面這個“虛擬的人”,那麼他就擁有了人的所有共同特性。這樣,這些重復的代碼我們就可以不寫了。
當然,繼承的目標不僅僅是為了節省代碼,還有實現後面的多態的功能。初學者只需要了解繼承可以少寫很多代碼就好了,余下的需要在項目中慢慢理解。
書面的解釋如下:
對象的繼承代表一種"is-a"的關系,假如兩個對象A和B,如果可以描述為"B就是A",那麼則表示B可以繼承自A。
注意:
如果A繼承了B,那麼A不僅擁有了B除私有的特性外的所有特性,A還可以擁有自己獨特的特性。比如上面人的這個例子,一個繼承了 “虛擬的人”,那麼他除了有一個腦袋,二只胳膊,二條腳,要吃飯喝水外,他可能還會編程。編程就是他獨特的特性了,因為不是每個人都會編程的。
三,多態:
有多態之前必須要有繼承,只有多個類同時繼承了同一個類,才有多態這樣的說法。
還是以人為例子,前面我們有說過人都要做“吃飯”這樣一個相同的事情。“吃飯”這個事情,體現到類中就是方法了。因為是人都是要做的,所以我們在“虛擬的人”中寫好了這個方法,但每個人都有不同的吃飯方法,有用筷的也有用叉的,有要吃米飯的也有要吃面食的。所以如果我們要描述不同人的吃飯的過程,就要把這個過程放到具體的子類中去了,因為每個人都不一樣嘛。同樣一個方法,子類都有不同的實現方式,這個就是多態了,多態有助於程序的靈活性。
注意:子類中如果重寫了父類的方法(多態),那麼父類中的這個方法將不會再調用。