JAVA面向對象之繼承

繼承:

講學生和工人的共性描述提取出來,單獨進行描述。只要讓學生和工人與單獨描述的這個類有關係,就可以了。

1、提高了代碼的複用性。

2、讓類與類之間產生了關係。有了這個關係,纔有了多態的特性。

3、注意:千萬不要爲了獲取其他類的功能,簡化代碼而繼承。必須是類與類之間有所屬的關係纔可以繼承。所屬關係isa

4、Java語言中,Java只支持單繼承,不支持多繼承。因爲多繼承容易帶來安全隱患:當多個父類中定義了相同的功能,當功能內容不同時,子類對象不確定要運行哪一個。

但是java保留這種機制,並用另一種體現形式來完成表示(多實現)

5、java支持多層繼承。也就是一個繼承體系

如何使用一個繼承體系中的功能呢?

想要使用體系,先查閱體系父類的描述,,因爲父類中定義的是該體系中共性功能,通過了解共性功能,就可以知道該體系的基本功能。

那麼這個體系已經可以基本使用了。

那麼在具體調用時,要創建最子類的對象,爲什麼呢?

因爲有可能父類不能創建對象

創建子類對象可以使用更多的功能,包括基本的也包括特有的

簡單一句話:查閱父類功能,創建子類對象使用功能。

小編是一個有着5年工作經驗的java程序員,對於java,自己有做資料的整合,一個完整學習java的路線,學習資料和工具,相信這裏有很多學習java的小夥伴,我創立了一個2000人學習扣羣,479121291。每晚都有java的直播課程。無論是初級還是進階的小夥伴小編我都歡迎!

6、子父類出現後,類成員的特點:

類中成員:

變量。

如果子類中出現非私有的同名成員變量時,子類要訪問本類中的變量,用this;訪問父類中的同名變量用super。

super的使用和this的使用幾乎一致。

this代表的是本類對象的引用;super代表的是父類對象的引用。

函數

當子類出現和父類一模一樣的函數時,當子類對象調用

該函數,會運行子類函數的內容。如同父類的函數被覆蓋

一樣。

這種情況是函數的另一個特性:重寫(覆蓋)】

當子類繼承父類,沿襲了父類的功能,到子類中,但

是子類雖具備該功能,但是功能的內容卻和父類的不一致

這時,沒有必要定義新功能,而是使用覆蓋特性,保留父

類的功能定義,並重寫功能的內容。

覆蓋(重寫)注意事項:

子類覆蓋父類,必須保證子類權限大於等於父類權限,

纔可以覆蓋,否則編譯失敗。

靜態只能覆蓋靜態。

重載:只看同名函數的參數列表。

重寫:子父類方法要一模一樣。

構造函數

在對子類對象進行初始化時,父類的構造函數也會運行,

那是因爲子類的構造函數默認第一行有一條隱式的語句

super()。

super():會訪問父類中的空參數構造函數。而且子類中所有

的構造函數默認第一行都是super()。

爲什麼子類一定要訪問父類中的構造函數?

因爲父類中的數據子類可以直接獲取。所以子類對象在建立

時需要先查看父類是如何對這些數據進行初始化的,所以子類

在對象初始化時要先訪問一下父類中的構造函數。

如果要訪問父類中指定的構造函數,可以通過手動定義

Super語句的方式來指定。

注意:super語句一定定義在子類構造函數的第一行。

子類的實例化過程:

結論:子類的所有構造函數,默認都會訪問父類中的空參

數構造函數;因爲子類中每一個構造函數內的第一行都有一

個隱式的super();

當父類中沒有空參數的構造函數時,子類必須手動通過super

語句的形式來指定要訪問父類中的構造函數。

當然:子類的構造函數第一行也可以手動指定this語句來訪

問本類構造函數;子類中至少有一個構造函數會訪問父類中的

構造函數。

final

作爲一個修飾符

1、可以修飾類、函數、變量。

2、被final修飾的類不可以被繼承。是爲了避免被繼承,被子類複寫的功能。

3、被final修飾的方法不可以被重寫。

4、被final修飾的變量是一個常量,只能賦值一次,既可以修飾成員變量,也可以修飾局部變量。

當在描述事物時,一些數據的出現值是固定的,那麼這是爲了增強閱讀性,都給這些值起個名字,方便於閱讀。而這個值不需要改變,所以加上final修飾。作爲常量:常量的書寫規範所有字母都大寫,如果由多個單詞組成,單詞間通過_連接。

5、內部類定義在類中的局部位置上時,只能訪問該局部被final修飾的局部變量。

抽象

1、抽象類的特點:

抽象方法一定在抽象類中

抽象方法和抽象類都必須被abstract關鍵字修飾

抽象類不可以用new創建對象,因爲調用抽象方法沒意義

抽象類中的抽象方法要被使用,必須由子類複寫起所有的抽象方法後,建立子類對象調用;如果子類只覆蓋了部分的抽象方法,那麼該子類還是一個抽象類。

抽象類中可以有抽象方法也可以有非抽象方法

抽象類和一般類沒有太大的不同:該如何描述事物,就如何描述事物,只不過,該事物出現了一些看不懂得東西。這些不確定的部分,也是該事物的功能,需要明確出現。但是無法定義主體

抽象類比一般類多了個抽象函數,就是在類中可以定義抽象方法;抽象類不可以實例化。

特殊:抽象類中可以不定義抽象方法,這樣做僅僅是不讓改類建立對象。

模板方法:

在定義功能時,功能的一部分是確定的,但是有一部分是不確定的,而確定的部分在使用不確定的部分,那麼這時就將不確定的部分暴露出去。有該類的子類去實現。

接口

初期理解:可以認爲是一個特殊的抽象類,當抽象類中的方法都是抽象的,那麼該類可以通過接口的形式來表示(interface)

接口定義時,格式特點:

1、接口中常見定義:常量,抽象方法。

2、接口中的成員都有固定修飾符。

常量:publicstaticfinal

方法:publicabstract

記住:接口中的成員都是public的。

3、接口是不可以創建對象的,因爲有抽象方法。需要被子類實現,子類對接口中的抽象方法全部覆蓋後,子類纔可以實例化。否則子類是一個抽象類。

4、接口可以被類多實現,也是對多繼承不支持的轉換形式,Java支持多實現。

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章