學半年編程才知道「面向對象」能夠這樣理解

面向對象是向現實世界模型的天然延申,是一種「萬物皆對象」的一種編程思想。java

什麼是萬物皆對象,對象有具體表如今哪些地方:在現實生活中的任何物體均可以歸爲一類事物,這一類事物能夠理解成「對象」,而每個單獨的個體都是一類事物的實例。編程

「對象」的概念也能夠這樣理解:把數據及對數據的操做方法放在一塊兒,做爲一個相互依存的總體——這所有一個總體稱之爲「對象」。設計模式

面向對象的編程是以對象爲中心,以消息爲驅動,因此程序=對象+消息。安全

面向對象有三大特性分別是:封裝、繼承、多態。

也正是由於這三大特性才使得「面向對象」面向對象編程範式觸及的領域,已經不僅僅純在於計算機。模塊化

 

1.面向對象之封裝:

封裝最好理解了,是對象和類概念的主要特性。學習

封裝就是將一類事物的屬性和行爲抽象成一個類,使其屬性私有化,行爲公開化,提升了數據的隱祕性的同時,使代碼模塊化。這樣作使得代碼的複用性更高。spa

而且類能夠把本身的數據和方法只讓可信的類或者對象操做,對不可信的進行信息隱藏。設計

簡單來講就是把一類「物體」用箱子裝起來,並留下一個能夠用「手」拿到物體的洞。相似於抽獎的紙箱。3d

 

2.面向對象之繼承:

繼承則是進一步將一類事物共有的屬性和行爲抽象成一個父類,而每個子類是一個特殊的父類--有父類的行爲和屬性,也有本身特有的行爲和屬性。這樣作擴展了已存在的代碼塊,進一步提升了代碼的複用性。

繼承是指這樣一種能力:它可使用現有類的全部功能,並在無需從新編寫原來的類的狀況下對這些功能進行擴展。

  • 經過繼承建立的新類稱爲「子類」或「派生類」。
  • 被繼承的類稱爲「基類」、「父類」或「超類」。
  • 繼承的過程,就是從通常到特殊的過程。
  • 要實現繼承,能夠經過「繼承」(Inheritance)和「組合」(Composition)來實現。

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

繼承的好處

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

繼承的缺點

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

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

 

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

構造器

經過上述咱們知道子類能夠繼承父類的屬性和方法,除了那些private外還有同樣是子類繼承不了的那就是:構造器。

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

 

protected關鍵字

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

 

向上轉型

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

繼承者徹底能夠替換被繼承者,反之則不能夠,例如咱們能夠說貓是動物,但不能說動物是貓就是這個道理,其實對於這個咱們將其稱之爲「向上轉型」。

將子類轉換成父類,在繼承關係上面是向上移動的,因此通常稱之爲向上轉型。因爲向上轉型是從一個叫專用類型向較通用類型轉換,因此它老是安全的,惟一發生變化的可能就是屬性和方法的丟失。

這就是爲何編譯器在「不曾明確表示轉型」活「不曾指定特殊標記」的狀況下,仍然容許向上轉型的緣由。

 

3.面向對象之多態:

多態性(polymorphisn)是容許你將父對象設置成爲和一個或更多的他的子對象相等的技術,賦值以後,父對象就能夠根據當前賦值給它的子對象的特性以不一樣的方式運做。雖然針對不一樣對象的具體操做不一樣,但經過一個公共的類,它們(那些操做)能夠經過相同的方式予以調用。

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

若是說封裝和繼承是爲了使代碼重用,那麼多態則是爲了實現接口重用。
多態的一大做用就是爲了解耦--爲了解除父子類繼承的耦合度。若是說繼承中父子類的關係式IS-A的關係,那麼接口和實現類之之間的關係式HAS-A。
簡單來講,多態就是容許父類引用(或接口)指向子類(或實現類)對象。不少的設計模式都是基於面向對象的多態性設計的。

 

例如老師教學生上課這個過程,用來解釋一下多態性,把老師看成一個對象,老師類相同的屬性:姓名、性別、年齡等,相同的方法:講課、佈置做業等。

而經過老師類接口能夠被多個相同的類使用,可被分爲語文老師類、數學老師類、地理老師類等等。而且每一個類都有父類的屬性特徵,也都有本身獨立的特性。-以上就是面向對象三大特性之:多態。

以上就是「面向對象」的簡單概念。

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

相關文章
相關標籤/搜索