1. 程式人生 > >this關鍵字與super關鍵字

this關鍵字與super關鍵字

一 this關鍵字

    this關鍵字在程式中三種常見的用法:

    (1)通過this關鍵字可以明確地去訪問一個類的成員變數,解決與區域性變數名稱衝突問題。

     例:

<span style="font-size:14px;">class Person{
     int age;
     public Person(int age){
       this.age=age;
     }
    public int getAge (){
    return this.age;
    }
  }</span>
    在上面的程式碼中,構造方法的引數被定義為age,它是一個區域性變數,在類中還定義了一個成員變數,名稱也是age,在構造方法中如果使用“age”,則是訪問區域性變數,但如果使用“this.age”則是訪問成員變數。

(2)通過this關鍵字呼叫成員方法

(3)構造方法是在例項化物件時被java虛擬機器自動呼叫的,在程式中不能像呼叫其它方法一樣去呼叫構造方法,但可以在一個構造方法中使用“this([引數1,引數2...])”的形式呼叫其它的構造方法

<span style="font-size:14px;"> class Person{
     public Person(){
        System.out.printIn(無參的構造方法被呼叫了);
    }
public Person(String name){
     this();
     System.out.printIn(有參的構造方法被呼叫了);
    }
 }
public class Example{
      public static viod main (String[] args){
      Person p=new Person("itcast");
    }
}</span>
在使用this呼叫類的構造時應注意:

1.只能在構造方法中使用this呼叫其它的構造方法,不能在成員方法中使用。

2.在構造方法中,使用this呼叫構造方法的語句必須位於第一行,且只能出現一次。

3.不能再一個類的兩個構造方法中使用this互相呼叫。

二 Super關鍵字

   當子類重寫父類的方法後,子類物件將無法訪問父類被重寫的方法,為了解決這個問題,在java中專門提供一個super關鍵字用於訪問父類的成員。

   super的用法:

(1)使用super呼叫父類的成員變數和成員方法。格式如下:

   super.成員變數

<span style="font-size:14px;"> super.成員方法([引數1,引數2....])
</span>
  (2) 使用super呼叫父類的構造方法。

   例:

<span style="font-size:14px;">class Animal{
     public Animal(String name){
     System.out.printIn("我是一隻"+name);
        }
}
class Dog extends Animal{
     public Dog(){
     super("狼狗");
       }
}
public class Example{
     public static viod main(String[ ] args ){
     Dog dog=new Dog();
      }
}
</span>
  注意:通過super呼叫父類的構造方法的程式碼必須位於子類構造方法的第一行,並且只能出現一次。

              在子類的構造方法中一定會呼叫父類的某個構造方法。這時可以在子類的構造方法中通過super指定呼叫父類的哪個構造方法,如果沒有指定,在例項化子類物件時,會自動呼叫父類無參的構造方法。