本文主要是介绍问:Super与this在Java中有什么区别?,希望对大家解决编程问题提供一定的参考价值,需要的开发者们随着小编来一起学习吧!
-
this:
this
关键字用于引用当前对象。它通常用于区分成员变量和方法参数或局部变量。- 在实例方法中,
this
指向调用该方法的对象。 - 在构造函数中,
this
指向正在被初始化的对象。
-
super:
super
关键字用于引用父类(超类)的构造函数、方法或变量。- 在子类的构造函数中,
super()
用于调用父类的构造函数。 - 在子类的方法中,
super.methodName()
用于调用父类的方法。
示例说明区别
示例1:在构造函数中的使用
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:在方法中的使用
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:在成员变量和参数中的使用
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
在构造函数、方法和成员变量等不同场景下的使用及其区别。
这篇关于问:Super与this在Java中有什么区别?的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!