Java連載51-super關鍵字

来源:https://www.cnblogs.com/ruigege0000/archive/2019/11/17/11874825.html
-Advertisement-
Play Games

一、super關鍵字 我們先看一個例子 package com.bjpowernode.java_learning; ​ public class D51_ { public static void main(String[] args) { Manager51 m1 = new Manager51 ...


一、super關鍵字

我們先看一個例子

 

package com.bjpowernode.java_learning;

​

public class D51_ {

  public static void main(String[] args) {

    Manager51 m1 = new Manager51();

    m1.m1();

  }

}

​

class Employee51{

  //成員函數

  public void work() {

    System.out.print("員工在工作");

  }

}

class Manager51 extends Employee51{

  public void work() {

    System.out.print("經理在工作");

  }

  public void m1() {

    this.work();

  }

}

 

我們從上面的代碼可以看出來,這個Manager51類繼承了Employee51這個類,並且還重寫了一個函數work,從顯示的結果也可以看的出來,返回了被改寫後的內容,現在我們有個需求就是讓Manager51這個類也返回“員工在工作”

我們改寫子類Manager51

 

class Manager51 extends Employee51{

  public void work() {

    System.out.print("經理在工作");

  }

  public void m1() {

    super.work();

  }

}

把this改成了super,就達到了調用父類的目的

二、註意點

1.super不是引用類型,super中存儲的不是記憶體地址,super指向的不是父類對象(這一點一定要和this關鍵做對比)

2.super代表的是當前子類對象中的父類型特征。

3.什麼時候使用super這個關鍵字

例如:子類和父類中都有某個數據,如果要在子類中訪問父類的某一個屬性或者方法,那麼我們就需要使用super.

4.super可以用在什麼地方

(1)super可以用在成員方法中

(2)super可以用在構造方法中

(3)super是不可以用在靜態方法中。(和this相同都不能用在靜態上下文中)

5.super關鍵字用在構造方法中語法

super(實參)

(1)作用:通過子類的構造方法去掉用父類的構造方法,其真正的作用就是給當前的子類對象中的父類型特征賦值。

(2)語法規則:一個構造方法第一行如果沒有this(...);也米有顯式的去調用(2)super(...);系統會預設調用super();

(4)super(...);的調用只能放在構造函數的第一行

(5)super(...)和this(...)不能共存

(6)super(...);調用了父類中的構造方法,但是不會創建父類對象。

(7)在java語言中只要是創建了java對象,那麼Object中的無參數構造方法一定會執行。​

(8)構造方法執行不一定會創建對象。​

 

package com.bjpowernode.java_learning;

​

public class D51_2_ {

  public static void main(String[] args) {

    DebitAccount51 d1 = new DebitAccount51();

  }

}

class Account51{

  //

  private String actno;

  private double balance;

  public String getActno() {

    return actno;

  }

  public void setActno(String actno) {

    this.actno = actno;

  }

  public double getBalance() {

    return balance;

  }

  public void setBalance(double balance) {

    this.balance = balance;

  }

  public Account51() {

    System.out.println("我是Account51的構造方法");

  }

  public Account51(String actno,double balance) {

    this.actno = actno;

    this.balance = balance;

  }

 

}

class DebitAccount51 extends Account51{

  private double debit;

​

  public double getDebit() {

    return debit;

  }

​

  public void setDebit(double debit) {

    this.debit = debit;

  }

  public DebitAccount51() {

    super();//這裡寫不寫這個super()都行,不寫預設寫。會調用父類的構造函數

  }

  public DebitAccount51(String actno,double balance,double debit) {

    super(actno,balance);//因為這兩個參數在父類中是私有的成員變數,所以在子類中不能直接賦值,

    //所以採用super(參數)的方式進行調用

    this.debit = debit;

  }

}

 

 

五、源碼:

D51_SuperKeywordAnalysis.java

D51_2_SuperInConstructionMethod.java

地址:

https://github.com/ruigege66/Java/blob/master/D51_SuperKeywordAnalysis.java

https://github.com/ruigege66/Java/blob/master/D51_2_SuperInConstructionMethod.java

2.CSDN:https://blog.csdn.net/weixin_44630050(心悅君兮君不知-睿)

3.博客園:https://www.cnblogs.com/ruigege0000/

4.歡迎關註微信公眾號:傅里葉變換,個人公眾號,僅用於學習交流,後臺回覆”禮包“,獲取大數據學習資料

 

 


您的分享是我們最大的動力!

-Advertisement-
Play Games
更多相關文章
  • 1.判斷undefined: var tmp = undefined; if (typeof(tmp) == "undefined"){ console.log("undefined"); } 說明:typeof 返回的是字元串,有六種可能:"number"、"string"、"boolean"、" ...
  • 預設安裝後是英文版 view-show console 安裝packagecontrol https://packagecontrol.io/installation ctrl+`打開控制台,輸入代碼後回車。 安裝後,工具->命令面板或快捷鍵按ctrl+shift+p,打開packagecontro ...
  • 作者:Yazeed Bzadough 譯者:小維FE 原文:freecodecamp 為了保證文章的可讀性,本文采用意譯而非直譯。 90%的規約,10%的庫。 Redux是迄今為止創建的最重要的JavaScript庫之一,靈感來源於以前的藝術比如 "Flux" 和 "Elm" ,Redux通過引入一 ...
  • 場景 Nginx入門簡介和反向代理、負載均衡、動靜分離理解 https://blog.csdn.net/BADAO_LIUMANG_QIZHI/article/details/102790862 Ubuntu Server 16.04 LTS上怎樣安裝下載安裝Nginx並啟動: https://bl ...
  • 一份擁有良好可讀性和拓展性的代碼是項目里的良藥,它不僅看著舒服,改起來也方便,甚至還能重用,各模塊邏輯分明。“見碼知功底”,而要達到高手那種簡潔有力的境界,需要進行大量的總結和練習,今天我們就來談談如何寫出優美的代碼。 命名 好的命名應該具有如下特征: 1,意思正確。這是最基本的要求,不要掛羊頭賣狗 ...
  • 例10 最大公約數 問題描述 有三個正整數a,b,c(0<a,b,c<10^6),其中c不等於b。若a和c的最大公約數為b,現已知a和b,求滿足條件的最小的c。 輸入數據 第一行輸入一個n,表示有n組測試數據,接下來的n行,每行輸入兩個正整數a,b。 輸出格式 輸出對應的c,每組測試數據占一行。 輸 ...
  • 例9 生理周期 問題描述 人生來就有三個生理周期,分別為體力、感情和智力周期,它們的周期長度為 23 天、28 天和33 天。每一個周期中有一天是高峰。在高峰這天,人會在相應的方面表現出色。例如,智力周期的高峰,人會思維敏捷,精力容易高度集中。因為三個周期的周長不同,所以通常三個周期的高峰不會落在同 ...
  • 面向對象編程思想 抽象 抽象的介紹 我們在前面去定義一個結構體時候,實際上就是把一類事物的共有的 屬性( 欄位)和 行為( 方法)提取 出來,形成一個 物理模型(結構體)。這種研究問題的方法稱為抽象 比如一個銀行賬戶: 面向對象編程三大特性 封裝 基本介紹 Golang 仍然有面向對象編程的繼承,封 ...
一周排行
    -Advertisement-
    Play Games
  • 移動開發(一):使用.NET MAUI開發第一個安卓APP 對於工作多年的C#程式員來說,近來想嘗試開發一款安卓APP,考慮了很久最終選擇使用.NET MAUI這個微軟官方的框架來嘗試體驗開發安卓APP,畢竟是使用Visual Studio開發工具,使用起來也比較的順手,結合微軟官方的教程進行了安卓 ...
  • 前言 QuestPDF 是一個開源 .NET 庫,用於生成 PDF 文檔。使用了C# Fluent API方式可簡化開發、減少錯誤並提高工作效率。利用它可以輕鬆生成 PDF 報告、發票、導出文件等。 項目介紹 QuestPDF 是一個革命性的開源 .NET 庫,它徹底改變了我們生成 PDF 文檔的方 ...
  • 項目地址 項目後端地址: https://github.com/ZyPLJ/ZYTteeHole 項目前端頁面地址: ZyPLJ/TreeHoleVue (github.com) https://github.com/ZyPLJ/TreeHoleVue 目前項目測試訪問地址: http://tree ...
  • 話不多說,直接開乾 一.下載 1.官方鏈接下載: https://www.microsoft.com/zh-cn/sql-server/sql-server-downloads 2.在下載目錄中找到下麵這個小的安裝包 SQL2022-SSEI-Dev.exe,運行開始下載SQL server; 二. ...
  • 前言 隨著物聯網(IoT)技術的迅猛發展,MQTT(消息隊列遙測傳輸)協議憑藉其輕量級和高效性,已成為眾多物聯網應用的首選通信標準。 MQTTnet 作為一個高性能的 .NET 開源庫,為 .NET 平臺上的 MQTT 客戶端與伺服器開發提供了強大的支持。 本文將全面介紹 MQTTnet 的核心功能 ...
  • Serilog支持多種接收器用於日誌存儲,增強器用於添加屬性,LogContext管理動態屬性,支持多種輸出格式包括純文本、JSON及ExpressionTemplate。還提供了自定義格式化選項,適用於不同需求。 ...
  • 目錄簡介獲取 HTML 文檔解析 HTML 文檔測試參考文章 簡介 動態內容網站使用 JavaScript 腳本動態檢索和渲染數據,爬取信息時需要模擬瀏覽器行為,否則獲取到的源碼基本是空的。 本文使用的爬取步驟如下: 使用 Selenium 獲取渲染後的 HTML 文檔 使用 HtmlAgility ...
  • 1.前言 什麼是熱更新 游戲或者軟體更新時,無需重新下載客戶端進行安裝,而是在應用程式啟動的情況下,在內部進行資源或者代碼更新 Unity目前常用熱更新解決方案 HybridCLR,Xlua,ILRuntime等 Unity目前常用資源管理解決方案 AssetBundles,Addressable, ...
  • 本文章主要是在C# ASP.NET Core Web API框架實現向手機發送驗證碼簡訊功能。這裡我選擇是一個互億無線簡訊驗證碼平臺,其實像阿裡雲,騰訊雲上面也可以。 首先我們先去 互億無線 https://www.ihuyi.com/api/sms.html 去註冊一個賬號 註冊完成賬號後,它會送 ...
  • 通過以下方式可以高效,並保證數據同步的可靠性 1.API設計 使用RESTful設計,確保API端點明確,並使用適當的HTTP方法(如POST用於創建,PUT用於更新)。 設計清晰的請求和響應模型,以確保客戶端能夠理解預期格式。 2.數據驗證 在伺服器端進行嚴格的數據驗證,確保接收到的數據符合預期格 ...