理解Java繼承以及this和super用法,這一點要明白

2020-12-16 願編程是詩

繼承是Java大三特性之一,繼承可以這麼理解,就是子類繼承父類的屬性以及行為(方法),也就是讓子類對象具有父類相同的屬性和方法。比如上活簡單例子:家族制的繼承,父親老了,但是父親擁有的事業以及資金,然後兒子繼承了父親,這時兒子就擁有了父親的屬性和方法,這就是繼承。繼承的好處就是提高代碼的復用性和類和類之間產生關係,這也是三大特性其中之一多態的前提。

子類繼承父類成員變量特點

如果子類繼承了父類,但是子類不寫父類的屬性和方法,這時候也是可以。而如果子類要寫與父類的成員變量相同,這時在子類中是需要訪問父類非私有成員變量時,必須寫super關鍵字,用法就是super.父類成員變量名,即可。

子類繼承父類方法特點

如果繼承父類,但是子類不重寫父類成員方法,這時對象調用時,它會先子類查找有沒有對應方法,如果子類存在就會執行子類方法,如果子類不存在就會執行父類相應的方法。如果子類繼承父類方法,這時叫方法的重寫(Override),子類方法和父類方法一模一樣,返回值類型、方法名以及參數列表都相同,這時是會有覆蓋效果的。重寫的好處:子類可以根據資金需要重新實現父類方法,這樣字可以進行擴展子類功能。

小結子類繼承父類:

子類方法要覆蓋父類方法,返回值類型、函數名以及參數列表都要一模一樣。子類方法覆蓋父類方法時,必須要保證權限問題,子類權限一定要大於父類權限。子類不能繼承父類構造方法。

子類初始化過程,必須先執行父類的初始化動作,也就是子類構造方法默認有一個super,表示調用父類構造方法,等父類成員變量初始化後,才能使用子類。值得注意:Java只支持單繼承,不支持多繼承(面試常問)

this和super

this:表示當前對象的引用,可以理解為誰調用就代表誰。super:表示父類存儲空間,可以理解父類的引用注意:super和this都必須是在構造方法的第一行,且不能同時出現。

筆者從事大數據、Java後端開發的,如果你也是正在考慮學習或者這學習中遇到什麼問題,可以評論區留言或者私信,感興趣的朋友可以關注我,後續會更新關於大數據、Java開發的技術文章。

相關焦點

  • Java中this和super的用法總結
    這幾天看到類在繼承時會用到this和super,這裡就做了一點總結,與各位共同交流,有錯誤請各位指正~thisthis是自身的一個對象,代表對象本身,可以理解為:指向對象本身的一個指針。this的用法在java中大體可以分為3種:1.普通的直接引用這種就不用講了,this相當於是指向當前對象本身。
  • 好好理解 Python 面向對象中的多繼承和super
    ok,以下是 VIP 基礎階段的試看文:Python快速入門 | 好好理解 Python 面向對象中的多繼承和super咱們上一篇講到了繼承,說到了子類和父類之間的關係,父類也叫作基類、超類,也就是 super class ,上次我們說要在子類使用父類定義的東西,就需要用到 super 方法,有些朋友不太理解:不是說子類繼承了父類,就直接都擁有了父類的東西了麼
  • 手把手Java入門:繼承(面向對象篇)
    繼承的概念繼承是java面向對象編程中的基石,它允許創建分層次的類。繼承是子類繼承父類的特徵和行為,使得子類對象具有父類的實例域和方法,或者子類直接繼承父類的方法,使得子類具有父類相同的行為。生活中的繼承老鼠和貓都是動物類,老鼠和貓就是動物類的子類,而動物類就是父類,繼承的符合關係是:is-a.在java中實現繼承的關鍵字是extends,它可以聲明一個類是從另外一個類繼承而來的。
  • Java零基礎,這樣學才快(4)幹了這杯乾貨
    Java繼承的話套路和c++大體是一樣的。,當然如果有盆友不懂繼承機制以及為什麼要有繼承的話下篇出一篇詳細的內容這期直接上示例代碼,讀者可以大致看看->然後在跟著代碼後面的解釋 ->再次精讀//base.javapackage inherit;public class base
  • 理解java的final、finally以及finalize
    剛學完java找工作的小夥伴基本都會去看一些面試題,肯定會看到過「final、finally和finalize區別」這個題目。那要怎麼理解呢,我來一個一個的說說。final百度翻譯的結果是「最終的」,這裡可以理解為「最終版」。學軟體開發的,肯定聽過一個類似的段子。程式設計師經過幾次修正,注釋說這是這個功能的最終版了。
  • Python中super( )的用法
    問題的發現與提出在Python類的方法(method)中,要調用父類的某個方法,在Python 2.2以前,通常的寫法如代碼段1:class A:  def __init__(self):   print "enter A"   print "leave A" class B(A):  def __init__(self):   print
  • Java之super關鍵字的用法
    各為小夥伴們大家好,這次小編要介紹的是Java當中super關鍵字的用法,在上面的文章中小編有講過,super關鍵字是用來調用父類之間的成員變量和成員方法。現在小編來總結一下super關鍵字的用法。>}}//定義一個正方形類(子類)public class square extends quadrangle{String name="正方形";public square(){//構造方法super
  • 「萬字圖文」Java繼承詳解
    繼承的初相識 學習繼承,肯定是先從廣的概念了解繼承是什麼以及其作用,然後才從細的方面學習繼承的具體實現細節,本關就是帶你先快速了解和理解繼承的重要概念。內部類可以繼承一個與外部類無關的類,保證了內部類的獨立性,正是基於這一點,可以達到多繼承的效果。多層繼承:子類繼承父類,父類如果還繼承其他的類,那麼這就叫多層繼承。
  • 史上最姨母級Java繼承萬字圖文詳解
    Java雖然不支持多繼承,但是Java有三種實現多繼承效果的方式,分別是內部類、多層繼承和實現接口。內部類可以繼承一個與外部類無關的類,保證了內部類的獨立性,正是基於這一點,可以達到多繼承的效果。多層繼承:子類繼承父類,父類如果還繼承其他的類,那麼這就叫多層繼承。
  • 面試官問我Java的三大特性(繼承),五分鐘後我讓他喜笑顏開!
    (百度百科):繼承是指一個對象直接使用另一對象的屬性和方法。在寫Java時用到繼承的情況有?這就說明了java中的代碼其實都有一個繼承的關係,只不過是繼承Object這個java中最根本的父類。繼承的特點子類擁有父類非private的屬性和方法,子類繼承的父類方法和成員變量可以當作自己的方法和成員變量一樣被子類的實例方法使用。子類可以有自己屬性和方法,即子類可以在父類的基礎上對父類進行擴展。
  • java的特性之:繼承
    子類可以直接訪問父類中的非私有的屬性和行為。通過 extends 關鍵字讓類與類之間產生繼承關係。提高代碼的復用性。讓類與類之間產生了關係,是多態的前提。1.Java只支持單繼承,不支持多繼承。//一個類只能有一個父類,不可以有多個父類。
  • Java 中的繼承和多態(深入版)
    在這三個特性中,如果沒有封裝和繼承,也不會有多態。那麼多態實現的途徑和必要條件是什麼呢?以及多態中的重寫和重載在JVM中的表現是怎麼樣?在Java中是如何展現繼承的特性呢?對於子類繼承於父類時,又有什麼限制呢?本文系基礎,深入淺出過一遍 Java 中的多態和繼承。多態是同一個行為具有多個不同表現形式或形態的能力。
  • 使用Python Super()為類提供繼承支持
    Square類從Rectangle繼承.area() 方法。注意:要了解有關Python中繼承和面向對象概念的更多信息,請務必在Python 3中查看面向對象編程(OOP)。super()能為你做什麼?那麼super()在單繼承中能為你做什麼呢?與其他面向對象語言一樣,它允許您在子類中調用超類的方法。
  • 傳智播客:Java當中繼承的特性和spuer、this關鍵字的相關知識
    比如是新的手機增加來電時候顯示頭像的功能,這樣的功能源碼如下:注意:在這當中重寫的時候,是要用到super的父類成員方法,表示調用父類的成員方法子類方法覆蓋父類方法的時候,必須要保證權限是大於或者是等於父類權限的子類方法覆蓋父類方法的時候,返回值類型、函數名和參數列表都要一模一樣
  • Java基礎:封裝與繼承
    ,同時了解一下final關鍵字的用法。用於修飾類用於修飾成員變量和成員方法:public:其他任何類都可以訪問該成員protected:只有繼承自己的子類才能訪問該成員private:除自己外其他任何類都不能訪問該成員默認情況,如果沒有任何訪問控制修飾符,則表示相同包內的類可以訪問該成員可見,如果要隱藏一個類的成員變量,只要在該成員變量的前面加上
  • Python多繼承、super與MRO算法
    本文主要以Python3.x為例講解Python多繼承、super以及MRO算法。
  • 你真的了解java的lambda嗎?- java lambda用法與源碼分析
    Thread的構造函數接收的是一個Runnable接口對象,而我們這裡的用法相當於是把一個函數當做接口對象傳遞進去了,這點理解很關鍵,這正是函數式編程的含義所在。我們注意到Runnable有個註解 @FunctionalInterface,它是jdk8才引入,它的含義是函數接口。
  • java中的super關鍵字,你理解了嘛?
    super在平時編程和面試的時候經常會被使用到,這篇文章就仔細來分析一下他的用法,並和this關鍵字做一個對比分析。1、概念它是一個指代變量,用於在子類中指代父類對象。2、應用範圍super的三種使用情況:訪問父類的方法。調用父類構造方法。
  • Java之this關鍵字的用法
    給位小夥伴們大家好,在之前的文章中,小編有講過super關鍵字的用法Java之super關鍵字的用法。這次小編要介紹的是在Java當中this關鍵字的用法。代碼如下:public class MengNiu extends Demo01Mike {//子類繼承父類int price=19;//成員變量public MengNiu(){this(23
  • Java高級特性入門:這三個你必須要了解(泛型、反射和註解)
    因為泛型在具體工作時,當編譯器在編譯源碼的時候,首先要進行泛型類型參數的檢查,檢查出類型不匹配等問題,然後進行類型擦除並同時在類型參數出現的位置插入強制轉換指令,從而實現泛型。除了上述的基礎用法之外,泛型還有幾種特殊的高階用法: