Java里的this和super是兩個關鍵字,它們用于訪問對象的屬性和方法,但是針對的對象不同。下面我們來詳細介紹一下它們的用法和區別。
1. this關鍵字
this關鍵字主要用于訪問當前對象的屬性和方法,它指向調用該方法的對象。當類中的屬性和方法與方法參數或者局部變量名稱相同時,使用this關鍵字可以指向該屬性或者方法。比如:
public class Person { private String name; public Person(String name) { this.name = name; } public void introduce() { System.out.println("My name is " + this.name); } }
在上面的例子中,this.name表示Person的實例變量name,而不是方法中的參數name。
2. super關鍵字
super關鍵字主要用于訪問父類的屬性和方法。當子類繼承父類時,使用super關鍵字可以訪問父類的構造方法、屬性和非private的方法。比如:
public class Student extends Person { private int grade; public Student(String name, int grade) { super(name); this.grade = grade; } public void introduce() { super.introduce(); System.out.println("I'm a student and my grade is " + this.grade); } }
在上面的例子中,super(name)表示調用父類Person的構造方法,而super.introduce()表示調用父類Person的introduce方法。
3. this和super的區別
this關鍵字表示當前對象,而super關鍵字表示父類對象。this關鍵字用于訪問當前對象的屬性和方法,而super關鍵字用于訪問父類的屬性和方法。此外,在調用構造方法時,this關鍵字表示調用本類構造方法,而super關鍵字表示調用父類構造方法。