摘要:上學(xué)學(xué)的完全沒印象,基礎(chǔ)爛的不行,最近項目主要是改,有時間就看了一下這本書補一下基礎(chǔ)在寫項目時,老用到繼承,但是對其了解不深,會用但是不理解概念繼承是面向?qū)ο缶幊碳夹g(shù)的一塊基石,因為它允許創(chuàng)建分等級層次的類。
上學(xué)學(xué)的完全沒印象,Java基礎(chǔ)爛的不行,最近項目主要是改bug,有時間就看了一下Head First Java這本書補一下基礎(chǔ)
在寫項目時,老用到Java繼承,但是對其了解不深,會用但是不理解
概念繼承是java面向?qū)ο缶幊碳夹g(shù)的一塊基石,因為它允許創(chuàng)建分等級層次的類。
繼承就是子類繼承父類的特征和行為,使得子類對象(實例)具有父類的實例域和方法,或子類從父類繼承方法,使得子類具有父類相同的行為。
語法格式Java 中通過 extends繼承,implement實現(xiàn)接口,一般形式如下:
class 父類 { } interface 接口{ } class 子類 extends 父類, implement 接口 { }
需要注意的是 Java 不支持類的多繼承,但可以實現(xiàn)多個接口。
繼承的特性子類擁有父類非 private 的屬性、方法,實現(xiàn)了代碼復(fù)用。
本質(zhì)上來說子類會繼承父類的所有屬性(包括private),只是私有屬性和方法無法直接使用。
子類可以擁有自己的屬性和方法,即子類可以對父類進行擴展。
子類可以用自己的方式實現(xiàn)父類的方法,即重寫/覆寫(Override)。
Java 的類繼承是單繼承,不支持多繼承,單繼承就是一個子類只能繼承一個父類,這是 Java 繼承區(qū)別于 C++ 繼承的一個特性。
提高了類之間的耦合性(繼承的缺點,耦合度高就會造成代碼之間的聯(lián)系越緊密,代碼獨立性越差)。
繼承的關(guān)鍵字繼承可以使用 extends 和 implements 這兩個關(guān)鍵字來實現(xiàn)繼承,而且所有的類都是繼承于 java.lang.Object,當一個類沒有繼承的兩個關(guān)鍵字,則默認繼承object(這個類在 java.lang 包中,所以不需要 import)祖先類。
extends
在 Java 中,類的繼承是單一繼承,也就是說,一個子類只能擁有一個父類,所以 extends 只能繼承一個類。
implements
使用 implements 關(guān)鍵字可以變相的使java具有多繼承的特性,使用范圍為類繼承接口的情況,可以同時繼承多個接口(接口跟接口之間采用逗號分隔)。
public interface A { public void eat(); public void sleep(); } public interface B { public void wolf(); } public class C implements A,B { }super this與final 關(guān)鍵字
super關(guān)鍵字:我們可以通過super關(guān)鍵字來實現(xiàn)對父類成員的訪問,用來引用當前對象的父類。
this關(guān)鍵字:指向自己的引用。
final 關(guān)鍵字聲明類可以把類定義為不能繼承的,即最終類;或者用于修飾方法,該方法不能被子類重寫.
實現(xiàn)繼承A.java
public class A { public int num = 1; public int getNum() { return num; } }
B.java
public class B extends A { }
Main.java
public class Main { public static void main(String[] args) { B b1 = new B(); System.out.println("b1.num = " + b1.num);//通過訪問數(shù)據(jù)域得到num的值 System.out.println("b1.getNum return " + b1.getNum());//通過get方法得到num的值 } }
結(jié)果:
b1.num = 1
b1.getNum return 1
可以發(fā)現(xiàn)我們沒有在class B中沒有定義任何數(shù)據(jù)域和方法,但是子類B可以繼承父類A所有可以訪問的數(shù)據(jù)域和方法。
回顧(到底上學(xué)的時候?qū)W的什么)想想上學(xué)時候老師都講了點啥,完全沒有印象,看了之前的U盤
發(fā)現(xiàn),上學(xué)時老師把一些知識點給我們總結(jié)成了Word,發(fā)給了我們,但是一點印象都沒有,甚至不知道是干什么的。
潘老師,總是和我們說工程和科學(xué)之間的區(qū)別,感覺有了更深得體會。
文章版權(quán)歸作者所有,未經(jīng)允許請勿轉(zhuǎn)載,若此文章存在違規(guī)行為,您可以聯(lián)系管理員刪除。
轉(zhuǎn)載請注明本文地址:http://www.ezyhdfw.cn/yun/77596.html
摘要:中很多特性或者說知識點都是和面向?qū)ο缶幊谈拍钕嚓P(guān)的。在多線程中內(nèi)容有很多,只是簡單說明一下中初步使用多線程需要掌握的知識點,以后有機會單獨再詳細介紹一些高級特性的使用場景。 寫這篇文章的目的是想總結(jié)一下自己這么多年來使用java的一些心得體會,主要是和一些java基礎(chǔ)知識點相關(guān)的,所以也希望能分享給剛剛?cè)腴T的Java程序員和打算入Java開發(fā)這個行當?shù)臏市率謧?,希望可以給大家一些經(jīng)...
摘要:自制力好的人,估計在保存后會翻出來看兩眼,過幾天又忘得一干二凈了。多思考學(xué)會思考,養(yǎng)成多思考的習(xí)慣。以項目來驅(qū)動自己學(xué)習(xí),整個過程將會有趣得多。后語以上就是我對自學(xué)的幾點建議,希望對你們有幫助。 微信公眾號:一個優(yōu)秀的廢人如有問題或建議,請后臺留言,我會盡力解決你的問題。 showImg(https://segmentfault.com/img/remote/1460000018208...
摘要:實現(xiàn)多態(tài)的三個必要條件繼承在多態(tài)中必須存在有繼承關(guān)系的子類和父類。參考面試題解惑系列九繼承多態(tài)重載和重寫面向?qū)ο笕筇匦苑庋b,繼承,多態(tài)以及抽象接口的介紹 版權(quán)聲明:本文由吳仙杰創(chuàng)作整理,轉(zhuǎn)載請注明出處:https://segmentfault.com/a/1190000009141566 1. 面向?qū)ο缶幊痰娜筇匦?Java 面向?qū)ο缶幊逃腥筇匦裕悍庋b、繼承、多態(tài)。 1.1 封裝...
摘要:快速了解繼承在的繼承關(guān)系里子類可以從獲取父類的所有的公共和受保護成員字段方法和內(nèi)部類。阻止繼承有些情況下,我們可能不希望子類覆蓋父類的方法,這時候,用關(guān)鍵字修飾方法即可實現(xiàn)該目的。 和現(xiàn)實世界中:子女可以繼承父母的一些特征(如:基因)、財產(chǎn)等一樣。OOP 中也有提供類似的特性,一個類完全可以從其它類里獲得一些屬性和方法,而不需要我們自己重新定義。這種特性簡單但強大 (Simple an...
摘要:眾多面向?qū)ο蟮木幊趟枷腚m不盡一致,但是無論哪種面向?qū)ο缶幊陶Z言都具有以下的共通功能。原型編程以類為中心的傳統(tǒng)面向?qū)ο缶幊?,是以類為基礎(chǔ)生成新對象。而原型模式的面向?qū)ο缶幊陶Z言沒有類這樣一個概念。 什么是面向?qū)ο螅窟@個問題往往會問到剛畢業(yè)的新手or實習(xí)生上,也是往往作為一個技術(shù)面試的開頭題。在這里我們不去談如何答(fu)好(yan)問(guo)題(qu),僅談?wù)勎宜斫獾拿嫦驅(qū)ο蟆?從歷...
閱讀 2117·2023-04-25 16:53
閱讀 1510·2021-10-13 09:39
閱讀 689·2021-09-08 09:35
閱讀 1693·2019-08-30 13:03
閱讀 2187·2019-08-30 11:06
閱讀 1905·2019-08-30 10:59
閱讀 3248·2019-08-29 17:00
閱讀 2343·2019-08-23 17:55