1. 程式人生 > >繼承中this關鍵字和super關鍵字的作用

繼承中this關鍵字和super關鍵字的作用

package org.westos_01_繼承;
/*
 * 問題:
 * 不僅要在控制檯輸出子類中的區域性變數的值,還要輸出子類的成員位置的變數的值,怎麼辦?
 *
 * 現在要訪問子類的成員變數num =20 ;
 * 誰能代表Zi2類,this關鍵字:代表的是當前類物件
 * 問題:要輸出父類中的成員變數的值:
 * super:代表的是父類的儲存的空間標識(代表的是父類的物件或者是父類的引用)
 * 應用場景:
 * 訪問成員變數:
 * this.成員變數;訪問的是本類的成員變數
 * super.成員變數:訪問的父類的成員變數
 * 訪問成員方法:
 * this.成員方法(); 訪問的是本類的成員方法
 * super.成員方法();訪問拿到父類的成員方法
 * 訪問構造方法:
 * this():訪問的是本類中的空參構造;this("..."):訪問拿到是本類中的帶參構造
 * super():訪問拿到是父類中無參構造
 * super(".."):訪問的是父類中的帶參構造
 * */
class Fu2{

public int num = 10;
}


class Zi2 extends Fu2{
public int num = 20 ;

public void show(){
int num = 30 ;
System.out.println(num);//30
System.out.println(this.num);//20
System.out.println(super.num);//10
}
}


//測試類
public class ExtendsDemo5 {
public static void main(String[] args) {
//建立子類物件
Zi2 z = new Zi2() ;

z.show() ;
}

}

package org.westos_01_繼承;
/*
 * 繼承中構造訪問的訪問特點:
 * 1)子類中的構造方法預設訪問的是父類的無參構造方法
 * 2)子類的構造方法預設的第一句話:super();
 * 
 * 為什麼子類中的構造方法預設訪問父類中的無參構造方法
 * 子類繼承父類的時候,可能會使用父類的資料,所以在繼承的時候,想讓父類進行初始化,父類初始化完畢之後,子類才進行自己的初始化!
 * 子類的無參和有參第一句話有一個預設語句:super() ; 
 *
 * */
class Father3{
public Father3(){
System.out.println("這是父類的無參構造方法...");
}

public Father3(String name){
System.out.println("這是父類的帶參構造方法...");
}
}
//子類
class Son3 extends Father3{
public Son3(){
///super() ;
System.out.println("這是子類的無參構造方法...");
}



public Son3(String name){
//super() ;
System.out.println("這是子類的有參構造方法...");
}





//測試類
public class ExtendsDemo6 {
public static void main(String[] args) {
//建立物件
Son3 s = new Son3() ;
System.out.println("-------------------");
Son3 s2 = new Son3("高圓圓") ;


}
}