學半年程式設計才知道“物件導向”可以這樣理解

落失的風箏發表於2021-07-29

物件導向是向現實世界模型的自然延申,是一種“萬物皆物件”的一種程式設計思想。

什麼是萬物皆物件,物件有具體表現在哪些地方:在現實生活中的任何物體都可以歸為一類事物,這一類事物可以理解成“物件”,而每一個單獨的個體都是一類事物的例項。

“物件”的概念也可以這樣理解:把資料及對資料的操作方法放在一起,作為一個相互依存的整體——這全部一個整體稱之為“物件”。

物件導向的程式設計是以物件為中心,以訊息為驅動,所以程式=物件+訊息。

學半年程式設計才知道“物件導向”可以這樣理解

物件導向有三大特性分別是:封裝、繼承、多型。

也正是因為這三大特性才使得“物件導向”物件導向程式設計正規化觸及的領域,已經不單單純在於計算機。

 

1.物件導向之封裝:

封裝最好理解了,是物件和類概念的主要特性。

封裝就是將一類事物的屬性和行為抽象成一個類,使其屬性私有化,行為公開化,提高了資料的隱祕性的同時,使程式碼模組化。這樣做使得程式碼的複用性更高。

並且類可以把自己的資料和方法只讓可信的類或者物件操作,對不可信的進行資訊隱藏。

簡單來說就是把一類“物體”用箱子裝起來,並留下一個可以用“手”拿到物體的洞。類似於抽獎的紙箱。

 

2.物件導向之繼承:

繼承則是進一步將一類事物共有的屬性和行為抽象成一個父類,而每一個子類是一個特殊的父類--有父類的行為和屬性,也有自己特有的行為和屬性。這樣做擴充套件了已存在的程式碼塊,進一步提高了程式碼的複用性。

繼承是指這樣一種能力:它可以使用現有類的所有功能,並在無需重新編寫原來的類的情況下對這些功能進行擴充套件。

  • 通過繼承建立的新類稱為“子類”或“派生類”。
  • 被繼承的類稱為“基類”、“父類”或“超類”。
  • 繼承的過程,就是從一般到特殊的過程。
  • 要實現繼承,可以通過“繼承”(Inheritance)和“組合”(Composition)來實現。

在某些 OOP 語言中,一個子類可以繼承多個基類。但是一般情況下,一個子類只能有一個基類,要實現多重繼承,可以通過多級繼承來實現。

繼承的好處

 子類擁有父類的所有屬性和方法(除了private修飾的屬性不能擁有)從而實現了實現程式碼的複用;

繼承的缺點

繼承定義了類如何相互關聯,共享特性。但同時也破壞啦封裝的特性,對於父類而言他的特性細節對於子類而言是透明的,

並且父類變更、子類必須變更,繼承是一種強耦合性關係,需謹慎繼承。 

 

學習繼承一定少不了這三個東西:構造器、protected關鍵字、向上轉型

構造器

通過上述我們知道子類可以繼承父類的屬性和方法,除了那些private外還有一樣是子類繼承不了的那就是:構造器。

對於構造器而言,它只能夠被呼叫,而不能被繼承。 如要呼叫父類的構造方法我們可以使用super()。

 

protected關鍵字

當我們儘可能的想要隱藏一些變數、方法時,但是還需要允許子類的成員來訪問他們。這時候就需要使用到protected關鍵字;

 

向上轉型

它除了擁有被繼承者的特性外,還擁有自己獨有得特性。例如貓有抓老鼠、爬樹等其他動物沒有的特性。同時在繼承關係中,

繼承者完全可以替換被繼承者,反之則不可以,例如我們可以說貓是動物,但不能說動物是貓就是這個道理,其實對於這個我們將其稱之為“向上轉型”。

將子類轉換成父類,在繼承關係上面是向上移動的,所以一般稱之為向上轉型。由於向上轉型是從一個叫專用型別向較通用型別轉換,所以它總是安全的,唯一發生變化的可能就是屬性和方法的丟失。

這就是為什麼編譯器在“未曾明確表示轉型”活“未曾指定特殊標記”的情況下,仍然允許向上轉型的原因。

 

3.物件導向之多型:

多型性(polymorphisn)是允許你將父物件設定成為和一個或更多的他的子物件相等的技術,賦值之後,父物件就可以根據當前賦值給它的子物件的特性以不同的方式運作。雖然針對不同物件的具體操作不同,但通過一個公共的類,它們(那些操作)可以通過相同的方式予以呼叫。

簡單的說,就是一句話:允許將子類型別的指標賦值給父類型別的指標。

如果說封裝和繼承是為了使程式碼重用,那麼多型則是為了實現介面重用。
多型的一大作用就是為了解耦--為了解除父子類繼承的耦合度。如果說繼承中父子類的關係式IS-A的關係,那麼介面和實現類之之間的關係式HAS-A。
簡單來說,多型就是允許父類引用(或介面)指向子類(或實現類)物件。很多的設計模式都是基於物件導向的多型性設計的。

 

例如老師教學生上課這個過程,用來解釋一下多型性,把老師當作一個物件,老師類相同的屬性:姓名、性別、年齡等,相同的方法:講課、佈置作業等。

而通過老師類介面可以被多個相同的類使用,可被分為語文老師類、數學老師類、地理老師類等等。並且每個類都有父類的屬性特徵,也都有自己獨立的特性。-以上就是物件導向三大特性之:多型。

以上就是“物件導向”的簡單概念。

理解夥伴點贊支援一下~~支援就是動力哦

 
 

相關文章