-
this:
this
关键字用于引用当前对象。它通常用于区分成员变量和方法参数或局部变量。- 在实例方法中,
this
指向调用该方法的对象。 - 在构造函数中,
this
指向正在被初始化的对象。
-
super:
super
关键字用于引用父类(超类)的构造函数、方法或变量。- 在子类的构造函数中,
super()
用于调用父类的构造函数。 - 在子类的方法中,
super.methodName()
用于调用父类的方法。
示例说明区别
示例1:在构造函数中的使用
java">class Parent {Parent() {System.out.println("Parent Constructor");}
}class Child extends Parent {Child() {super(); // 调用父类构造函数System.out.println("Child Constructor");}
}public class Main {public static void main(String[] args) {Child c = new Child();}
}
输出:
Parent Constructor
Child Constructor
super()
调用了父类Parent
的构造函数。
示例2:在方法中的使用
java">class Parent {void display() {System.out.println("Parent Display");}
}class Child extends Parent {void display() {super.display(); // 调用父类的方法System.out.println("Child Display");}void show() {this.display(); // 调用当前对象的方法}
}public class Main {public static void main(String[] args) {Child c = new Child();c.show();}
}
输出:
Parent Display
Child Display
super.display()
调用了父类Parent
的display
方法。this.display()
调用了当前对象(即Child
类)的display
方法。
示例3:在成员变量和参数中的使用
java">class Test {private int value;Test(int value) {this.value = value; // 区分成员变量和参数}void show() {System.out.println("Value: " + this.value); // 引用当前对象的成员变量}void setValue(int value) {this.value = value; // 区分成员变量和参数}void superExample() {// 假设有一个父类方法或变量,这里只是为展示this的使用System.out.println("This is an example of 'this' in method: " + this.value);}
}public class Main {public static void main(String[] args) {Test t = new Test(10);t.show();t.setValue(20);t.show();t.superExample();}
}
输出:
Value: 10
Value: 20
This is an example of 'this' in method: 20
this.value
区分了构造函数和方法参数value
,引用了当前对象的成员变量value
。- 在
superExample
方法中,展示了this
如何用于引用当前对象的成员变量。
结尾
this
关键字用于引用当前对象,常用于区分成员变量和局部变量或参数。super
关键字用于引用父类的构造函数、方法或变量。- 通过示例,帮助大家了解
this
和super
在构造函数、方法和成员变量等不同场景下的使用及其区别。