在Java編程語言中,this和super是兩個重要的關鍵字,它們可以用來訪問類的成員和方法。下面我們來詳細了解一下它們的用法和區別。
this:表示當前對象的引用,它指向當前方法正在操作的對象。當類中的成員變量和局部變量名相同時,使用this關鍵字可以區分成員變量和局部變量。例如:
public class Person{ String name; int age; public void setName(String name){ this.name = name; // this指向Person對象的name屬性 } public void setAge(int age){ this.age = age; // this指向Person對象的age屬性 } }
super:表示從父類繼承過來的成員變量、方法和構造函數。當子類和父類中存在同名的成員變量和方法時,使用super關鍵字可以直接訪問父類中的成員變量和方法。例如:
public class Animal{ String name; public Animal(String name){ this.name = name; } public void run(){ System.out.println("Animal is running..."); } } public class Dog extends Animal{ int age; public Dog(String name, int age){ super(name); // 調用父類的構造函數 this.age = age; } public void run(){ super.run(); // 調用父類的run方法 System.out.println("Dog is running..."); } }
this和super的區別在于:
- this是指向當前對象的引用,super是指向父類對象的引用;
- this只能在非靜態方法和構造函數中使用,super可以在任意方法和構造函數中使用;
- this不能用來訪問可見性為private的成員變量和方法,super可以。
在實際開發中,我們會經常使用this和super關鍵字,充分掌握它們的用法和區別,可以幫助我們更好地理解和設計Java類。