摘要:繼承就是子類繼承父類的特征和行為,使得子類對象實例具有父類的實例域和方法,或子類從父類繼承方法,使得子類具有父類相同的行為。關(guān)鍵字在中,類的繼承是單一繼承,也就是說,一個子類只能擁有一個父類,所以只能繼承一個類。
概念
繼承是java面向?qū)ο缶幊碳夹g(shù)的一塊基石,因為它允許創(chuàng)建分等級層次的類。
繼承就是子類繼承父類的特征和行為,使得子類對象(實例)具有父類的實例域和方法,或子類從父類繼承方法,使得子類具有父類相同的行為。
語法格式Java 中通過 extends 或 implement關(guān)鍵字可以申明一個類是從另外一個類或接口繼承而來的,一般形式如下:
class 父類 { } interface 接口{ } class 子類 extends 父類, implement 接口 { }
需要注意的是 Java 不支持類的多繼承,但支持接口的多繼承。
繼承的特性子類擁有父類非 private 的屬性、方法,實現(xiàn)了代碼復(fù)用。
本質(zhì)上來說子類會繼承父類的所有屬性(包括private),只是私有屬性和方法無法直接使用。
子類可以擁有自己的屬性和方法,即子類可以對父類進(jìn)行擴(kuò)展。
子類可以用自己的方式實現(xiàn)父類的方法,即重寫/覆寫(Override)。
Java 的類繼承是單繼承,不支持多繼承,單繼承就是一個子類只能繼承一個父類,這是 Java 繼承區(qū)別于 C++ 繼承的一個特性。
提高了類之間的耦合性(繼承的缺點,耦合度高就會造成代碼之間的聯(lián)系越緊密,代碼獨立性越差)。
繼承關(guān)鍵字繼承可以使用 extends 和 implements 這兩個關(guān)鍵字來實現(xiàn)繼承,而且所有的類都是繼承于 java.lang.Object,當(dāng)一個類沒有繼承的兩個關(guān)鍵字,則默認(rèn)繼承object(這個類在 java.lang 包中,所以不需要 import)祖先類。
extends關(guān)鍵字在 Java 中,類的繼承是單一繼承,也就是說,一個子類只能擁有一個父類,所以 extends 只能繼承一個類。
implements關(guān)鍵字使用 implements 關(guān)鍵字可以變相的使java具有多繼承的特性,使用范圍為類繼承接口的情況,可以同時繼承多個接口(接口跟接口之間采用逗號分隔)。
public interface A { public void eat(); public void sleep(); } public interface B { public void show(); } public class C implements A,B { }super 與 this 關(guān)鍵字
super關(guān)鍵字:我們可以通過super關(guān)鍵字來實現(xiàn)對父類成員的訪問,用來引用當(dāng)前對象的父類。
this關(guān)鍵字:指向自己的引用。
final關(guān)鍵字final 關(guān)鍵字聲明類可以把類定義為不能繼承的,即最終類;或者用于修飾方法,該方法不能被子類重寫.
構(gòu)造器子類是不繼承父類的構(gòu)造器(構(gòu)造方法或者構(gòu)造函數(shù))的,它只是調(diào)用(隱式或顯式)。
如果父類的構(gòu)造器帶有參數(shù),則必須在子類的構(gòu)造器中顯式地通過 super 關(guān)鍵字調(diào)用父類的構(gòu)造器并配以適當(dāng)?shù)膮?shù)列表。
如果父類構(gòu)造器沒有參數(shù),則在子類的構(gòu)造器中不需要使用 super 關(guān)鍵字調(diào)用父類構(gòu)造器,系統(tǒng)會自動調(diào)用父類的無參構(gòu)造器。
class SuperClass { private int n; SuperClass(){ System.out.println("SuperClass()"); } SuperClass(int n) { System.out.println("SuperClass(int n)"); this.n = n; } } class SubClass extends SuperClass{ private int n; SubClass(){ super(300); System.out.println("SubClass"); } public SubClass(int n){ System.out.println("SubClass(int n):"+n); this.n = n; } } public class TestSuperSub{ public static void main (String args[]){ SubClass sc = new SubClass(); SubClass sc2 = new SubClass(200); } } 輸出結(jié)果為: SuperClass(int n) SubClass SuperClass() SubClass(int n):200
文章版權(quán)歸作者所有,未經(jīng)允許請勿轉(zhuǎn)載,若此文章存在違規(guī)行為,您可以聯(lián)系管理員刪除。
轉(zhuǎn)載請注明本文地址:http://specialneedsforspecialkids.com/yun/73560.html
摘要:參考資料程序設(shè)計北大唐大仕零基礎(chǔ)學(xué)語言浙大翁愷面向?qū)ο蟪绦蛟O(shè)計語言浙大翁愷在里面搜索可以查看和修改快捷鍵自動補全代碼格式化簡介歷史與一起發(fā)展萬維網(wǎng)所有信息用鏈接連接起來靜態(tài)網(wǎng)頁動態(tài)網(wǎng)頁的出現(xiàn)年開發(fā)工具包語法增加廣泛動態(tài)編譯腳本 參考資料 Java程序設(shè)計 - 北大 - 唐大仕 零基礎(chǔ)學(xué)Java語言 - 浙大 - 翁愷 面向?qū)ο蟪绦蛟O(shè)計——Java語言 - 浙大 - 翁愷 Ecl...
摘要:目錄介紹問題匯總具體問題好消息博客筆記大匯總年月到至今,包括基礎(chǔ)及深入知識點,技術(shù)博客,學(xué)習(xí)筆記等等,還包括平時開發(fā)中遇到的匯總,當(dāng)然也在工作之余收集了大量的面試題,長期更新維護(hù)并且修正,持續(xù)完善開源的文件是格式的同時也開源了生活博客,從年 目錄介紹 00.Java問題匯總 01.具體問題 好消息 博客筆記大匯總【16年3月到至今】,包括Java基礎(chǔ)及深入知識點,Android技...
摘要:進(jìn)階面試問題列表翻譯自,從屬于筆者的入門與工程實踐系列。只是單純的問題列表,可能較水,慎進(jìn)。面向?qū)ο缶幊痰幕纠砟钆c核心設(shè)計思想解釋下多態(tài)性,封裝性,內(nèi)聚以及耦合。新版的中有哪些新特性介紹下的優(yōu)勢與缺陷。 Java 進(jìn)階面試問題列表翻譯自Java developer interview questions: The hard part,從屬于筆者的Java入門與工程實踐系列。最近公司打...
摘要:但是單核我們還是要應(yīng)用多線程,就是為了防止阻塞。多線程可以防止這個問題,多條線程同時運行,哪怕一條線程的代碼執(zhí)行讀取數(shù)據(jù)阻塞,也不會影響其它任務(wù)的執(zhí)行。 1、多線程有什么用?一個可能在很多人看來很扯淡的一個問題:我會用多線程就好了,還管它有什么用?在我看來,這個回答更扯淡。所謂知其然知其所以然,會用只是知其然,為什么用才是知其所以然,只有達(dá)到知其然知其所以然的程度才可以說是把一個知識點...
閱讀 1016·2021-09-26 09:55
閱讀 3556·2021-09-24 10:30
閱讀 1364·2021-09-08 09:36
閱讀 2553·2021-09-07 09:58
閱讀 603·2019-08-30 15:56
閱讀 765·2019-08-29 18:32
閱讀 3594·2019-08-29 15:13
閱讀 1840·2019-08-29 13:49