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關鍵字是什麼內容請搜索WalkonNet以前的文章或繼續瀏覽下面的相關文章希望大傢以後多多支持WalkonNet!

推薦閱讀: