【戰爭雷霆】中系的無能資料員可能要被貶為庶人了
封裝
-
該露的露,該藏的藏
-
程式要求“高內聚,低耦合”,高內聚就是類的內部資料操作細節自己完成,不允許外部干涉;低耦合:僅暴露少量的方法給外部使用。
-
-
封裝(資料的隱藏)
-
通常,應禁止直接訪問一個物件中資料的實際表現,而應通過操作介面來訪問,這稱為資訊隱藏。
-
-
屬性私有,get/set
封裝的意義:
-
提高程式的安全性,保護資料
-
隱藏程式碼的實現細節
-
統一介面
-
系統的可維護性增加了
繼承
-
繼承的本質是對某一批類的抽象,從而實現對現實世界更好的建模
-
extends的意思是“擴充套件”。子類是父類的擴充套件
-
JAVA中類只有單繼承
-
繼承是類和類之間的一種關係,除此之外,類和類之間的關係還有依賴、組合、聚合等
-
繼承關係的兩個類,一個為子類(派生類),一個為父類(基類)。子類繼承父類,用關鍵詞extends來表示
-
子類和父類之間,從意義上講應該具有“is a”的關係。
子類繼承了父類,就會擁有父類的全部方法
私有的東西無法被繼承
-
object類
-
super 呼叫父類的構造器必須要在子類構造器的第一行
-
-
方法重寫
多型
動態編譯:型別:-可擴充套件性
同一個方法可以根據傳送物件的不同而採用多種不同的行為方式
一個物件的型別是確定的,但可以指向物件的引用的型別有很多(父類,有關係的類)
多型存在的條件:
-
有繼承關係
-
子類重寫父類方法
-
父類引用指向子類物件
注意:多型是方法的多型,屬性沒有多型性
instanceof 型別轉換 引用型別,判斷一個物件是什麼型別
-
父類引用指向子類的物件
把子類轉換為父類:向上轉型
把父類轉換為子類:向下轉型,強制轉換
方便方法的呼叫,減少重複的程式碼,簡潔
static關鍵字
{
//程式碼塊(匿名程式碼塊)賦初值
System.out.println("匿名程式碼塊");
}
static{
//靜態程式碼塊,只執行一次
System.out.println("靜態程式碼塊");
}
public Person(){
System.out.println("構造方法");
}
執行結果:
靜態程式碼塊
匿名程式碼塊
構造方法
靜態>匿名>構造方法
靜態程式碼塊之執行一次
抽象類
不能new這個抽象類,只能靠子類去實現它:約束!
抽象類中可以寫普通方法
抽象方法必須解除安裝抽象類中
抽象的抽象:約束
//思考題?
//存在構造器嗎?
//存在的意義? 提高開發效率
介面
普通類:只有具體的實現
抽象類:具體實現和規範(抽象方法)否有!
介面:只有規範!自己無法寫方法~專業的約束!約束和實現分離:面向介面程式設計~
介面的本質是契約
宣告類的關鍵字是class,宣告介面的關鍵在是interface
介面是面向的精髓,是對物件的抽象