Java連載51-super關鍵字

1、super關鍵字java

咱們先看一個例子node

 

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這個類也返回「員工在工做」git

咱們改寫子類Manager51github

 

class Manager51 extends Employee51{

  public void work() {

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

  }

  public void m1() {

    super.work();

  }

}

把this改爲了super,就達到了調用父類的目的微信

2、注意點函數

1.super不是引用類型,super中存儲的不是內存地址,super指向的不是父類對象(這一點必定要和this關鍵作對比)學習

2.super表明的是當前子類對象中的父類型特徵。大數據

3.何時使用super這個關鍵字ui

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

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;

  }

}

 

 

5、源碼:

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.歡迎關注微信公衆號:傅里葉變換,我的公衆號,僅用於學習交流,後臺回覆」禮包「,獲取大數據學習資料

 

相關文章
相關標籤/搜索