封裝
我們設計程式要追求 高內聚,低耦合 。
高內聚:類的內部資料操作細節自己完成,不允許外部干涉
低耦合:僅暴露少量方法給外部使用
封裝(資料的隱藏)
通常,應禁止直接訪問一個物件中資料的實際表示,而應通過操作介面來訪問,這稱為資訊隱藏。
屬性私有, get/set
1.提高程式的安全性,保護資料 2.隱藏程式碼的實現細節 3.統一介面 4.系統可維護增加了
繼承
繼承的本質是對某一批類的抽象,從而實現對現實世界更好的建模。
extends的意思是"擴充套件"。子類是父類的擴充套件。
Java中類只有單繼承,沒有多繼承
object類: 所有類都直接或間接繼承Object類
super : this
方法重寫: 重點--->多型
super注意點:
1.super呼叫父類的構造方法,必須在構造方法的第一個
2.super 必須只能出現在子類的方法或構造方法中!
3.super和this不能同時呼叫構造方法!
VS this:
代表的物件不同:
this: 本身呼叫者這個物件
super:代表父類物件的應用
前提:
this:沒有繼承也可以使用
super:只能在繼承條件下才可以使用
構造方法
this();本類的構造
super();父類的構造!
重寫(重點)--->多型
b是A new出來的物件,因此呼叫A的方法
因為靜態方法是類的方法,非靜態是物件的方法
有static時,b呼叫了B類的方法,因為b是B類定義的
沒有static時,b呼叫的是物件的方法,而b是用A類new的 (靜態屬於類 非靜態屬於物件 優先順序類大於物件)
重寫:需要有繼承關係,子類重寫父類的方法!
方法名必須相同
引數列表必須相同
修飾符:範圍 可以擴大但不能縮小: public > Protected > Default > private 注意被final常量修飾後不能繼承(斷子絕孫)
丟擲的異常: 範圍 可以被縮小,但不能擴大; ClassNotFoundException --> Exception (大)
重寫,子類的方法和父類必須一致:方法體不同!
為什麼需要重寫? 父類的功能,子類不一定需要,或者不一定滿足! 快捷鍵: Alt+Insert ; override; 或者 Ctrl+O
多型(動態編譯: 可擴充套件性變得更強)
即同一種方法跟已根據傳送物件的不同而採取用多種不同的行為方式。
一個物件的實際型別是確定的,但可以指向物件的引用型別有很多。(父類,有關係的類)
多型的注意事項: 1.多型是方法的多型,屬性沒有多型。 2.父類和子類,有聯絡 型別轉換異常: ClassCastException! 3.多型存在條件: 1.繼承關係 2.方法需要重寫(子類重寫父類方法) 3.父類引用指向子類物件!! father f1 = new Son();
哪些方法不能重寫: 1.static 方法 屬於類 不屬於例項 2.final 常量; 3.private私有;
instanceof (型別轉換)引用型別,判斷一個物件是什麼型別~
型別轉化存在條件: 1.父類引用指向子類的物件 2.把子類轉化為父類,向上轉型;自動轉換 3.把父類轉化為子類,向下轉化;強制轉化(丟失了子類獨有的方法) 4.方便方法的呼叫,減少重複程式碼,提高利用率!簡潔
抽象:封裝、繼承、多型!! 抽象類 介面
程式設計思想 持續學習
Static關鍵字詳解
{ //程式碼塊(匿名程式碼塊) }
static{ //靜態程式碼塊 }
匯入靜態包PI