1. 程式人生 > >java面向物件-繼承、抽象類

java面向物件-繼承、抽象類

1.繼承     概述:在程式中,繼承描述的是事物之間的所屬關係,通過繼承可以使多種事物之間形成一種關係體系。     繼承的格式&使用         class 子類 extends 父類 {}     繼承的特點:         在java中只支援單繼承         多個類可以繼承一個父類         多層繼承是可以的         子類和父類是相對的     繼承中成員變數的特點:         子類只能獲取父類非私有成員         子父類中成員變數的名字不一樣直接獲取父類的成員變數          子父類中成員變數名字是一樣的獲取的是子類的成員變數

    就近原則:誰離我近我就用誰         如果有區域性變數就使用區域性變數          如果沒有區域性變數,有子類的成員變數就使用子類的成員變數          如果沒有區域性變數和子類的成員變數,有父類的成員變數就使用父類的成員變數          super:可以獲取父類的成員變數和成員方法,用法和this是相似的

    方法的重寫:在子父類當中,子類的方法和父類的完全一樣,子類重寫了父類的方法(覆蓋),當子類重寫了父類的方法之後,使用子類物件呼叫的就是子類的方法      方法的過載:在一個類中,有多個重名的方法,但是其引數不一樣(引數的個數,引數的型別,引數的順序),和返回值無關           方法重寫的注意事項:               不可以重寫父類私有的成員方法,壓根就看不到父類的私有成員              子類重寫父類方法,許可權必須大於等於父類方法的許可權               註解                     @Override:方法重寫,說明下面的方法是重寫父類的方法

2.繼承中構造方法的執行順序     super(實參列表);語句  在子類的構造方法中使用,用來呼叫父類中的構造方法(具體哪一個由傳遞的引數決定),並且只能在構造方法第一行使用     this(實參列表); 語句  在類的構造方法中使用,用來呼叫本類中的其它構造方法(具體哪一個由傳遞的引數決定),並且只能在構造方法的第一行使用

3.繼承的優缺點     優點         提高了程式碼的複用性         提高了程式碼的可維護性          缺點:         類的耦合性增強了         開發的原則:高內聚低耦合         內聚:就是自己完成某件事情的能力         耦合:類與類的關係

4.抽象類          只抽取方法宣告,不抽取方法主體。那麼此方法就是一個抽象方法。          抽象類的特點:         抽象方法只能在抽象類裡面           抽象類和抽象方法必須被abstract修飾           抽象類不能建立物件(不能例項化)          抽象類中可以有非抽象的方法          抽象類和類的關係也是繼承          一個類繼承了抽象類要麼重寫所有的抽象方法,要麼他自己是抽象類

    抽象類的成員的特點:         成員變數               可以有成員變數               可以有常量         成員方法               可以有抽象方法               可以有非抽象方法           構造方法               可以有構造方法的,需要對抽象類的成員變數進行初始化

5.抽象類的細節     抽象類關鍵字abstract可以和哪些關鍵字共存?     1.private:         私有的方法子類是無法繼承到的,也不存在覆蓋,而abstract和private一起使用修飾方法,abstract既要子類去實現這個方法,而private修飾子類根本無法得到父類這個方法。互相矛盾。     2.final:            抽象類不能和final共存,因為抽象類自身無法建立物件,我們需要通過子類建立物件,一旦抽象類使用final關鍵字,那麼抽象類就沒有子類           抽象方法不能和final共存,因為抽象方法後期需要被子類重寫,一旦加final無法重寫        3.static:           抽象方法不能和static關鍵字共存,因為一旦加static我們就可以通過類名直接訪問抽象方法,由於抽象方法沒有方法體,沒有任何意義,也不允許這樣做

    抽象類中是否可以不定義抽象方法?         是可以的,那這個抽象類的存在到底有什麼意義呢?不讓該類建立物件,方法可以直接讓子類去使用

    抽象類是否有建構函式?                有,抽象類的建構函式,是由子類的super語句來呼叫,用於給抽象類中的成員初始化