在物件導向程式設計方法中,封裝(encapsulation)是指一種將抽象性函式介面的實現細節部份包裝、隱藏起來的方法。要訪問該類的**和資料,必須通過嚴格的介面控制。
封裝的優點:
良好的封裝能夠減少耦合。
類內部的結構可以自由修改。
可以對成員變數進行更精確的控制。
隱藏資訊,實現細節。
封裝可以通過private來體現
例:要訪問類中私有成員變數的類都要通過getter和setter方法
繼承就是子類繼承父類的特徵和行為,使得子類物件(例項)具有父類的例項域和方法,或子類從父類繼承方法,使得子類具有父類相同的行為。
父類又叫基類,超類;子類又叫派生類;可以**重用,為多型做準備
特點:「單」繼承
注意:子類可以擴充套件自身功能,也可以直接使用父類的功能,但子類不能修改父類功能
構造方法不叫繼承,但子類可以呼叫父類構造方法,同時類本身可以通過this()互相呼叫自身構造方法
呼叫父類構造方法用super(),呼叫自身構造方法用this()
this()和super()都必須在構造方法首行,如果沒有手動呼叫,則預設是super()
當父類沒有無參構造方法,則子類必須手動呼叫父類有參構造方法
this()和super()不能同時存在
this()不能互相呼叫
多型是同乙個行為具有多個不同表現形式或形態的能力。
多型就是同乙個介面,使用不同的例項而執行不同操作。
條件:有extends和override
語法:父類引用 = 子類物件
引用負責呼叫,滿足就近原則,從當前類中一致到object為止
物件負責執行
注意:父類引用不能呼叫子類特有方法
多型的優點
消除型別之間的耦合關係
可替換性
可擴充性
介面性靈活性
簡化性
多型存在的三個必要條件:繼承、重寫(override)、父類引用指向子類物件
public class animal extends object
public animal(int n)
// void eat()
}
//extends 繼承:父類有的,子類可以直接使用
//作用:**重用
//語法:理解?
//父類又叫基類,超類
//子類又叫派生類
//extends 特點:「單」繼承
//1. 乙個子類只有乙個"直接父類",但乙個父類可以同時有多個子類
類是所有類的父類(如果不手動extends,則預設繼承object)
//3.類可以多重繼承(乙個子類可以有多個不同的父類)
//4.子類可以直接使用父類的,還可以定義自身的功能
//5.子類可以使用父類的,但沒有修改父類的功能許可權
//6.構造方法不能繼承
//7.自定義類是否有且必須有乙個父類?
public class cat extends animal
// 有參呼叫無參
public cat(int n)
public void catchmouse()
// 方法重寫
// 1.訪問控制符可以變大或者相等,但不能變小(父類不能是private)
// 2.static修飾的方法不叫override
// 3.返回值型別,方法名,引數相同
// 4.子類不能比父類丟擲更多的異常
@override
public void eat()
}class dog extends animal
public class test
}
物件導向三大特性
什麼是物件導向呢?之前我們做一件事的時候,常常是確定,先幹什麼,然後怎麼做,最後可以完事了。其實我們不妨這麼想一下,我們做事的時候是可以這樣的 這件事中涉及了什麼物件角色?如果我要把這件事做成那麼就需要物件之間是如何協作的?第二種方法,就是今天說的物件導向的方法了,好處正在慢慢體會。今天我想說的物件...
物件導向三大特性
0x00 嘮嘮叨叨 只是做乙個概念的記錄 0x01 物件導向的三大特性 n 封裝 把客觀事物封裝成抽象的類,並且類可以把自己的資料和方法只讓可信的類或者物件操作,對不可信的進行資訊隱藏。類將成員變數和成員函式封裝在類的內部,根據需要設定訪問許可權,通過成員函式管理內部狀態。n 繼承 繼承所表達的是類...
物件導向三大特性
封裝 oo將萬物都視為 物件 object 任何物件都具有特性和行為。我們將其特性稱為 成員變數 membervarible 將其行為稱之為 成員函式 member function 被封裝的特性只能通過特定的行為去訪問。好處 良好的封裝可以降低耦合度 類的內部可以自由修改 類具有對外的清晰介面。繼...