Java中的super和this都是關(guān)鍵字,用于指代當(dāng)前對(duì)象和當(dāng)前對(duì)象的父類對(duì)象。但是,這兩個(gè)關(guān)鍵字不能同時(shí)使用,因?yàn)樗鼈兇淼氖莾蓚€(gè)不同的對(duì)象。
public class Animal { int age; public Animal(int age) { this.age = age; } } public class Dog extends Animal { String name; public Dog(int age, String name) { super(age); // 調(diào)用父類構(gòu)造器 this.name = name; // 初始化子類屬性 } public void printInfo() { System.out.println("Name: " + this.name); // 使用子類對(duì)象的name屬性 System.out.println("Age: " + super.age); // 使用父類對(duì)象的age屬性 } }
在上述代碼中,我們可以發(fā)現(xiàn),在Dog類的printInfo方法中,我們想同時(shí)使用子類對(duì)象的name屬性和父類對(duì)象的age屬性,但是使用this和super時(shí)不能同時(shí)使用。因?yàn)閠his代表的是當(dāng)前對(duì)象Dog,而super代表的是當(dāng)前對(duì)象的父類對(duì)象Animal,這兩者是不同的,不能同時(shí)使用。
因此,我們需要在方法中分別使用this和super,來(lái)獲取不同對(duì)象的屬性值。
public void printInfo() { System.out.println("Name: " + this.name); // 使用子類對(duì)象的name屬性 System.out.println("Age: " + super.age); // 使用父類對(duì)象的age屬性 }
總之,Java中的super和this不能同時(shí)使用,因?yàn)樗鼈兇淼氖遣煌膶?duì)象。如果需要使用不同對(duì)象的屬性或方法,我們需要分別使用super和this來(lái)獲取。