【Python 1-16】Python手把手教程之——類Class的繼承、父類、子類
阿新 • • 發佈:2020-12-24
面向物件三大特性
封裝
概念:屬性私有化(private),提供setXXX和getXXX。
作用:保證資料的合理。
一般情況下,我們的程式設計要追求"高內聚,低耦合"
高內聚就是類的內部資料操作細節自己完成,不允許外部干涉
低耦合:僅暴漏少量的方法給外部使用。
封裝的意義:
1. 提高程式的安全性,保護資料
2.隱藏程式碼的實現細節
3.統一介面
4.系統可維護增加了
繼承
概念:類與類之間,特徵和行為的贈與或獲得。 滿足繼承關係的前提:二者必須具備is a關係。 語法:class 子類 extends 父類{} 建立子類物件 = 父類共性 + 子類獨有 繼承的好處:減少程式碼的冗餘,提高程式碼的複用性。 繼承的特點: java只支援單繼承,不支援多繼承,但可以多層繼承,形成整合體系結構。 子類繼承了父類,就會擁有父類的所有方法
不可被繼承
1.構造方法
2.private修飾的屬性和方法
3.父子類不在同一個package中,使用default修飾的屬性和方法
Object類
概念:在java中,所有的類都預設直接或間接繼承Object類
特點:
1.所有的類要麼直接繼承要麼間接繼承。
2.所有的物件都可呼叫Object類中的方法。
3.Object可以作為形式引數:能夠接收任意物件(引用資料型別)。
4.Object可以作為返回值型別:能夠返回任意物件(引用資料型別)
super關鍵字
用法: super.成員方法():表示呼叫父類中的成員方法 super.屬性:表示呼叫父類的屬性 super()和super(實參):表示呼叫父類的構造方法 注意:如果構造中沒有this()或者this(實參)或者super(實參),每一個構造方法中首行都隱式存在super()。
super和this的區別
代表的物件不同:
this:本身呼叫者這 個物件
super:代表父類物件的應用
前提:
this:沒喲繼承也可以使用
super:只能在繼承條件才可以使用
構造方法:
this() ; 本類的構造;
super():父類的構造!
方法的重寫
重寫需要有繼承關係,子類重寫父類的方法! 重寫都是方法的重寫,和屬性無關 1.方法名必須相同 2.引數列表必須相同 3.修飾符:範圍可以擴大但不能 public>Protected>Default>private 4.丟擲的異常:範圍,可以被縮小,但不能擴大:ClassNotFoundException --> Exception(大) 重寫,子類的方法和父類必須要一直:方法體
為什麼要重寫?
父類的功能子類不一定需要,或者不一定滿足!
多型
多型就是方法的多型
一個物件的實際型別是確定的,但可以指向物件的引用的型別有很多(父類,有關係的類)
概念:父類引用指向子類物件。
注: 父類引用只能呼叫父類中所定義的屬性和方法,子類獨有的屬性和方法不可呼叫。
二者必須存在繼承關係
多型中的方法覆蓋:
子類覆蓋父類中的方法,使用父類引用呼叫該方法,執行的是覆蓋之後的
多型存在的條件
1. 有繼承關係
2. 子類重寫父類方法
3. 父類引用指向子類物件
多型的應用
場景一:父類引用應用在形式引數上,能夠接收 本類型別 + 所有子類型別。
場景二:父類型別應用在返回值型別上,能夠返回 本型別 + 所有子類型別。
好處:
降低耦合性
遮蔽子類間的使用差異
向上轉型、向下轉型
向上轉型(裝箱):父類引用中儲存的是子類物件。
裝箱:將基本型別用它們對應的引用型別包裝起來
舉例:Animal a = new Dog();
注:父類引用只能呼叫父類中的屬性和方法。
向下轉型(拆箱):將父類引用中所儲存的真是型別強制轉換為自身型別。
拆箱:將包裝型別轉換為基本資料型別
舉例:Dog d = (Dog)a;
注:只有轉換為子類真實型別,才可以呼叫子類中獨有屬性和方法。
instanceof
語法:引用 instanceof 型別
作用:判斷引用中儲存的真實型別是什麼