Java的super和this
阿新 • • 發佈:2021-07-06
Java的super和this
super
私有的東西無法被繼承
使用super可以呼叫父類的屬性或者方法
super.name;
super.print();
super();呼叫父類的無參構造器,必須在子類構造器的第一行。定義子類構造器的時候,它是預設存在的,隱藏程式碼。
super(“name”);呼叫父類的有參構造器
super的注意點:
- super呼叫父類的構造方法,必須在構造方法的第一個
- super必須只能出現在子類的方法或者構造方法中
- 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():父類的構造