Java中的super關鍵字和this關鍵字作用介紹


、super關鍵字的作用

  1、子類在構造方法中顯示調用父類構造方法

      super可以在子類的構造方法中顯示調用父類的構造方法;並且這行代碼必須出現在子類構造方法的第一行。原因:因為父類構造方法沒有執行之前父類的屬性和方法還沒有被創建,則子類不能繼承父類的屬性和方法,因此子類的構造方法不能被執行。

/**
 * 子類:構造方法的第一行要保證顯示或者隱式的調用構造方法
 * @author Administrator
 *
 */
public class Teacher extends Person {
    //繼承自父類的空構造函數
    public Teacher() {
        
    }
    public Teacher(String name, int age, String gender) {
//1. 出現在子類構造函數的第一行,用於調用父類的構造方法
super(name, age, gender); } private String course; public void teach() { System.out.println("教..."); } }

  2.可以在子類中充當臨時父類對象

     可以在子類內部代表父類對象,從而在子類中訪問父類的屬性和方法

class Person01 {
    private String name;
    private int age;
    public void say() {
        System.out.println("人說....");
        return null;
    }
    public void eat() {
        System.out.println("人吃....");
    }
}
class Teacher01 extends Person01 {
    @Override
    public C say() {
        System.out.println("老師在一本正經的說...");
        return null;
    }
    //注解的作用:防止開發者誤寫,起到提示作用
    @Override
    public void eat() {
        System.out.println("洗個手");
        //2. super作用:super類似於父類的虛擬對象
        super.eat();
        System.out.println("抽根煙...");
    }
}

 二、this關鍵字的作用

  1、代表當前對象

     在類的內部永遠代表正在執行此代碼的對象;在成員方法和構造方法內部,都可以通過this來明確訪問類中的成員屬性和成員方法。

public class Person03 {
    String name;
    int age;
    //構造代碼塊:直接在類中編寫一對大括號,構造代碼塊可以訪問到之前定義的屬性
    { 
        System.out.println("構造代碼塊!" + name);
    }
    
    { 
        say();
        
        System.out.println("構造代碼塊2!" + this);
    }
    
    public Person03(){
        System.out.println("構造方法!");
    }
    public Person03(String name, int age) {
//1. 指向無參構造方法
this();
//2. 代表正在執行此代碼的對象
this.name = name; this.age = age; } void say() { System.out.println("成員方法說動作"); } { say(); System.out.println("構造代碼塊3!"); } public static void main(String[] args) { Person03 p = new Person03(); p.say(); //匿名創建對象:創建對象只會用一次並且立即使用,而不用賦值給一個引用,即為創建了一個匿名對象 new Person03().say(); } }

  2、指向某個構造方法

  在構造方法內部通過this(參數列表),可以調用其他構造方法。

注意:使用這種用法時,this()必須出現在當前構方法的第一行

三、super和this的共同點和區別

       共同點:super和this都可以代表一個臨時對象執行構造函數,並且都要放在構造函數的第一行;

       不同點:super一般用在子類中,用於代表父類的對象;this用於當前類中,用於代表正在執行該代碼的對象。

 


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM