下面是面向對象的本人解析的圖片可以讓你們更好的理解一下!!!
一,封裝:
我們可以把世界上任何一個東西都看作為一個對象,那麼我們這裡以人為例,一個人就肯定是一個對象了。
那麼封裝是什麼呢?
封裝就是這個人要完成一件事情,他所需要的任何工具都帶在了自己的身上,所需要的技術也都裝在了自己的腦子裡了。不需要借助於別人的力量就能完成這一件事情。這個有什麼好處呢?好處就是如果我要吩咐這個人去完成一件事情,我不需要知道他是怎麼完成的,也不需要協助他去完成,只要知道結果,他完成了就OK了。至於他是先干什麼後干什麼我不干涉,這有助於他更快更好的干好這件事情,我自己也省事。
書面的解釋如下:
每個對象都包含它能進行操作所需要的所有信息,因此對象不必依賴其它的對象來完成自己的操作。
二,繼承:
還以為人為例,我們每個人都會有一些共同的特征,都要做一些相同的事情。比如:人都有一個腦袋,二只胳膊,二條腳,這是共同的特征。都要吃飯,喝水,這是都要做的相同的事情。那麼如果我們現在要聲明很多個人,每個人都會有這些特征,那我不是要寫很多重復的代碼?所以我們可以先建一個人的父類,這個父類不代表一個具體的人,只是一個擁有人所有共同特性的虛擬的人。下次我們要實例化一個具體的人的時候,只需要將這個人繼承上面這個“虛擬的人”,那麼他就擁有了人的所有共同特性。這樣,這些重復的代碼我們就可以不寫了。
當然,繼承的目標不僅僅是為了節省代碼,還有實現後面的多態的功能。初學者只需要了解繼承可以少寫很多代碼就好了,余下的需要在項目中慢慢理解。
書面的解釋如下:
對象的繼承代表一種"is-a"的關系,假如兩個對象A和B,如果可以描述為"B就是A",那麼則表示B可以繼承自A。
注意:
如果A繼承了B,那麼A不僅擁有了B除私有的特性外的所有特性,A還可以擁有自己獨特的特性。比如上面人的這個例子,一個繼承了 “虛擬的人”,那麼他除了有一個腦袋,二只胳膊,二條腳,要吃飯喝水外,他可能還會編程。編程就是他獨特的特性了,因為不是每個人都會編程的。
三,多態:
有多態之前必須要有繼承,只有多個類同時繼承了同一個類,才有多態這樣的說法。
還是以人為例子,前面我們有說過人都要做“吃飯”這樣一個相同的事情。“吃飯”這個事情,體現到類中就是方法了。因為是人都是要做的,所以我們在“虛擬的人”中寫好了這個方法,但每個人都有不同的吃飯方法,有用筷的也有用叉的,有要吃米飯的也有要吃面食的。所以如果我們要描述不同人的吃飯的過程,就要把這個過程放到具體的子類中去了,因為每個人都不一樣嘛。同樣一個方法,子類都有不同的實現方式,這個就是多態了,多態有助於程序的靈活性。
注意:子類中如果重寫了父類的方法(多態),那麼父類中的這個方法將不會再調用。
1.聲明:abstract class classname在類聲明中使用abstract修飾符指示某個類只能是其他類的基類,標記為抽象或包含在抽象類中的成員必須通過從抽象類派生的類來實現。 2.使用abstract關鍵字的注意事項: (1)抽象類的特性: 成員:抽象類可以包含抽象方法、屬性、索引器、事件,也可以包含非抽象的方法。 規則:抽象類不能實例化,不能用sealed修飾符修改抽象類,否則就意味這抽象類不能被繼承。從抽象類派生的非抽象類必須包括繼承的所有抽象方法和抽象訪問器的實現。 (2)抽象方法的特性: 抽象方法是隱式的虛方法,只允許在抽象類中使用抽象方法聲明。因為抽象方法聲明不提供實際的實現,所以沒有方法體;方法聲明只是以一個分號結束,並且在簽名後沒有大括號”{}”。 實現多態性的重載和覆寫的比較: 重載的特點(兩必須一可以):方法名必須相同,參數列表必須不相同,返回類型可以不相同。 覆寫的特點(三相同):相同的方法名稱,相同的參數列表,相同的返回值類型。 3.密封類:密封類不能被繼承,密封方法重寫基類的方法,但其本身不能在任何派生類中進一步重寫。密封類只要是為類防止第三方未經授權的擴展自身的類。