物件導向的三大特徵

2021-08-21 09:15:26 字數 3722 閱讀 2564

一、封裝: 我們可以把世界上任何乙個東西都看作為乙個物件,那麼我們這裡以人為例,乙個人就肯定是乙個物件了。 那麼封裝是什麼呢? 封裝就是這個人要完成一件事情,他所需要的任何工具都帶在了自己的身上,所需要的技術也都裝在了自己的腦子裡了。不需要借助於別人的力量就能完成這一件事情。這個有什麼好處呢?好處就是如果我要吩咐這個人去完成一件事情,我不需要知道他是怎麼完成的,也不需要協助他去完成,只要知道結果,他完成了就ok了。至於他是先幹什麼後幹什麼我不干涉,這有助於他更快更好的幹好這件事情,我自己也省事。

1、訪問許可權(可見性)

public:(隨處可見)所有包、類匯入後均可見  公共的

protected:(合法繼承)本身、不同包的子類自身,

private:(自私自利)只在本類中可見

本類

同包類

public

protected

default

private

不同包類

public

protected

default

子類

子類

public

protected(子類中,且子類自身使用)

其他類

public

2、

(1)、屬性-->private(私有屬性,公開方法,不用預設)

(2)、方法--> public    protected

書面的解釋如下: 每個物件都包含它能進行操作所需要的所有資訊,因此物件不必依賴其它的物件來完成自己的操作。

二、繼承: 還以為人為例,我們每個人都會有一些共同的特徵,都要做一些相同的事情。比如:人都有乙個腦袋,二只胳膊,二條腳,這是共同的特徵。都要吃飯,喝水,這是都要做的相同的事情。那麼如果我們現在要宣告很多個人,每個人都會有這些特徵,那我不是要寫很多重複的**?所以我們可以先建乙個人的父類,這個父類不代表乙個具體的人,只是乙個擁有人所有共同特性的虛擬的人。下次我 們要例項化乙個具體的人的時候,只需要將這個人繼承上面這個「虛擬的人」,那麼他就擁有了人的所有共同特性。這樣,這些重複的**我們就可以不寫了。

當然,繼承的目標不僅僅是為了節省**,還有實現後面的多型的功能。初學者只需要了解繼承可以少寫很多**就好了,餘下的需要在專案中慢慢理解。

書面的解釋如下: 物件的繼承代表一種"is-a"的關係,假如兩個物件a和b,如果可以描述為"b就是a",那麼則表示b可以繼承自a。

注意: 如果a繼承了b,那麼a不僅擁有了b除私有的特性外的所有特性,a還可以擁有自己獨特的特性。比如上面人的這個例子,乙個繼承了 「虛擬的人」,那麼他除了有乙個腦袋,二只胳膊,二條腳,要吃飯喝水外,他可能還會程式設計。程式設計就是他獨特的特性了,因為不是每個人都會程式設計的。

1、

(1)、延續:父類存在,子類沒有重寫但可以使用;

(2)、新增:父類沒有,子類新增加的

(3)、重寫:父類子類都存在,但是弗雷德不滿足要,子類對其進行從新定義;

2、 例項化:

(1)、先父類後子類,先靜態後成員;

例項化的時候先呼叫父類的靜態構造快,在呼叫父類的構造方法,然後子類的構造塊,在呼叫子類的構造方法;

(2)、預設呼叫父類空構造;

3、重寫  override

(1)、重寫與過載:

重寫:繼承的子類中,方法簽名相同( 方法名+形參個數 型別 順序  )

過載:同乙個類 方法名相同 ,形參個數 型別 順序 不同

(2)、重寫規則:在子類中簽名與父類中相同,在合理範圍內提高子類可見性;

a、返回型別:基本型別和void必須相同;引用型別要<=父類的返回類

b、異常:

c、可見性:要大於或等於父類中被重寫的方法

三、多型: 有多型之前必須要有繼承,只有多個類同時繼承了同乙個類,才有多型這樣的說法。

還是以人為例子,前面我們有說過人都要做「吃飯」這樣乙個相同的事情。「吃飯」這個事情,體現到類中就是方法了。因為是人都是要做的,所以我們在「虛擬的人」中寫好了這個方法,但每個人都有不同的吃飯方法,有用筷的也有用叉的,有要吃公尺飯的也有要吃麵食的。所以如果我們要描述不同人的吃飯的過程,就要把這個過程放到具體的子類中去了,因為每個人都不一樣嘛。同樣乙個方法,子類都有不同的實現方式,這個就是多型了,多型有助於程式的靈活性。

注意:子類中如果重寫了父類的方法(多型),那麼父類中的這個方法將不會再呼叫。

1.好處:

簡化了程式設計介面。它容許在類和類之間重用一些習慣性的命名,而不用 為每乙個新加的函式命名乙個新名字。

簡化**

如果函式/方法引數中使用的是父類的型別,可以傳入父類、子類的物件

侷限性:父類型別的變數,不能直接呼叫子類特有的方法。必須強轉為子類型別的變數,才能直接呼叫子類特有的方法

2、編譯時多型:其實就是過載,是對非虛成員來說的,系統在編譯時,根據不同簽名來決定實現何種操作。

3、執行時多型:也就是重寫,是通過虛成員實現的,指直到系統執行時,才根據實際情況決定實現何種操作。

對與第一種情況很容易就能理解,不同簽名就有不同的實現

而第二種情況是在繼承的基礎上實現的,子類繼承基類時,通過對虛成員的重寫,然後利用基類引用子類物件,那麼不同的子類物件實現相應的不同操作。

這樣的好處是顯而易見的,利用基類型別定義一次,然後給它傳入不同的子類物件,然後實現不同的操作,提高了效率。

物件導向三大特徵

1.繼承 什麼是繼承 繼承是一種建立新類的方式,在python中,新建的類可以繼承乙個或多個父類,父類又可稱為基類或超類,新建的類稱為派生類或子類 python中類的繼承分為 單繼承和多繼承 class parentclass1 定義父類 pass class parentclass2 定義父類 p...

物件導向三大特徵

是指將物件的狀態資訊隱藏在物件內部,不允許外部程式直接訪問而是通過類提供的方法實現類內資訊的操作和訪問。可以通過j a中的訪問控制符來實現。實現復用。j a中,通過extends實現繼承 每個類只有乙個直接父類 j a.lang.object是所有類的直接 間接父類 子類獲得父類的全部屬性和方法 除...

物件導向的三大特徵

封裝 物件的資訊和內部的邏輯結構隱藏起來private 只能當前類的內部 被訪問default 包訪問許可權 protected 包一下類,其他類都可以訪問 public 所有類訪問 為每個屬性建立一對賦值和取值 繼承 在現有類的基礎上派生出新的類,新類將共享現有類的屬性和行為特徵,並且還可以在派生...