1. 程式人生 > 程式設計 >java super關鍵字知識點詳解

java super關鍵字知識點詳解

在對一些父類的呼叫上,我們需要藉助java中的關鍵字使用,這就是super關鍵字,可以歸納為三種方法:作用於類、方法名和建構函式。可以把它看做是使用父類的一個工具,相信大家在之前類的使用中有所接觸。下面我們就super的說明、三種用法、注意事項進行說明,然後在例項中體會用法。

1.說明

super相當於是指代當前的物件的父類,呼叫父類的屬性、方法和構造方法

2.用法

(1)super.變數/物件名;

使用這種方法可以直接訪問父類中的變數或物件,進行修改賦值等操作

(2)super.方法名();

直接訪問並呼叫父類中的方法

(3)super();

呼叫父類的初始化方法,其實就是呼叫父類中的public xxx()方法,通常第三種指代的是super()的省略寫法,系統會預設新增此句。

特殊情況:如果父類沒有無參的建構函式,所以子類需要在自己的建構函式中顯示的呼叫父類的建構函式,即不能使用系統預設的“super()”,而需要顯性寫出super(xxx)

3.注意事項

(1)表示呼叫父類的建構函式。也是一個特殊語法,不是變數,沒有什麼型別。

(2)可以在一個類的非static成員內部使用。比如super.method()。

但是,注意,這個super.method()只是長得跟some_var.method()一樣,一個語法糖而已。實質上,"super"根本不是一個變數。

(3)super的另外一個作用是呼叫父類的protected函式。只有通過"super"這個魔咒,我們才能操作父類的protected成員,別無它法。

4.例項

class Person{
  private String name;
  private int age;
  public Person(String name){
    this.name = name;
  }
  public Person(String name,int age){
    this(name);  //this呼叫構造方法必須放在第一行,這裡這樣寫是為了避免程式碼重複
    this.age = age;
  }
  public Person(){
    System.out.println("1.Person類的構造方法");
  }
}
class Student extends Person{
  private String school;
  public Student(){
    super("yy");
    System.out.println("Student類的構造方法");
  }
  public Student(String school){
    this();
    //super("yy");  //對super的呼叫必須在構造方法的第一行
    System.out.println("2.Student類的構造方法");
  }
}
public class Day6{
  public static void main(String[] args){
    Student stu = new Student("beida");
  }
}

知識點擴充套件:

java Super 用法詳解

1)有人寫了個很好的初始化屬性的建構函式,而你僅僅想要在其中新增另一些自己新建屬性的初始化,這樣在一個建構函式中呼叫另外一個建構函式,可以避免重複的程式碼量,減少工作量;

2)在一個建構函式中呼叫另外一個建構函式的時候應該用的是同一塊記憶體空間,在預設的建構函式中先初始化變數,呼叫另一個的時候覆寫已經初始化的變數的值;

3)整個呼叫的過程和遞迴呼叫函式有點類似,不斷充氣球,直到整個氣球膨脹起來,不斷的深層遞進,遇到停止標記,逐層的跳出來。

到此這篇關於java super關鍵字知識點詳解的文章就介紹到這了,更多相關java super關鍵字是什麼內容請搜尋我們以前的文章或繼續瀏覽下面的相關文章希望大家以後多多支援我們!