1. 程式人生 > 其它 >Java的super和this

Java的super和this

Java的super和this

super

私有的東西無法被繼承

使用super可以呼叫父類的屬性或者方法

super.name;
super.print();

super();呼叫父類的無參構造器,必須在子類構造器的第一行。定義子類構造器的時候,它是預設存在的,隱藏程式碼。

super(“name”);呼叫父類的有參構造器

super的注意點:

  1. super呼叫父類的構造方法,必須在構造方法的第一個
  2. super必須只能出現在子類的方法或者構造方法中
  3. super和this不能同時呼叫構造方法
package com.cnblogs;
//本類用於實現
public class Application {
    public static void main(String[] args) {
        //例項化父類
        Persion persion = new Persion();
        //例項化子類
        Student stu = new Student();

        stu.show();
        //這是父類的方法
        //1000000000
    }
}

package com.cnblogs;
/*
persion類
 */
public class Persion {
    //父類方法
   public void in(){
       System.out.println("這是父類的方法");
   }
    //父類屬性
   public int rmb = 10_0000_0000;
}

package com.cnblogs;
/*
student類
 */
public class Student extends Persion{
    public void show(){
        super.in();
        System.out.println(super.rmb);
    }
}

this

this代表的就是"本類"

package com.cnblogs;
//本類用於實現
public class Application {
    public static void main(String[] args) {
        //例項化
        Persion persion = new Persion();

        persion.show();
        //1
        //2
    }
}

package com.cnblogs;
/*
persion類
 */
public class Persion {
    //本類屬性
    public int a = 1;
    public int b = 2;

    //本類方法
   public void in(){
       //this呼叫本類屬性
       System.out.println(this.a);
       System.out.println(this.b);
   }
   //this呼叫本類方法
   public void show(){
       this.in();
   }

}

使用this區分同名變數

package com.cnblogs;
//本類用於實現
public class Application {
    public static void main(String[] args) {
        //例項化
        Persion persion = new Persion("柒",21);
        persion.show();
        //柒
        //21
    }
}

package com.cnblogs;
/*
persion類
 */
public class Persion {
    //本類屬性
    public String name;
    public int age;

    //本類的構造方法
    public Persion(String name,int age) {
        this.name = name;
        this.age = age;
    }

    //展示方法
    public void show(){
        System.out.println(this.name);
        System.out.println(this.age);

    }
}

super和this的比較

  • 代表的物件不同
    • this:本身呼叫者這個物件
    • super:代表父類物件的應用
  • 前提
    • this:沒有繼承也可以使用
    • super:只能在繼承條件才能使用
  • 構造方法
    • this():本類的構造
    • super():父類的構造