Java中super与this关键字的用途及区别详解
目录
- super关键字
- 主要用途:
- this关键字
- 主要用途:
- super与this的区别
- 代码示例
- 总结
super关键字
super
是Java中的一个引用变量,用于引用直接父类对象。
主要用途:
访问父类的成员变量:当子类和父类有同名变量时
super.variableName;
调用父类的方法:特别是当子类重写了父类方法时
super.methodName();
调用父类的构造器:必须在子类构造器的第一行
su编程客栈per(); // 或 super(parameters);
this关键字
this
是Java中的一个引用变量,用于引用当前对象。
主要用途:
引用当前对象的成员变量:解决局部变量与成员变量同名的问题
this.variableName = variableName;
调编程客栈用当前类的方法:明确调用当前类的方法
this.methodName();
调用当前类的构造器:必须在构造器的第一行
this(); // 或 this(parameters);
作为参数传递:将当前对象作为参数传递
method(this);
super与this的区别
特性 | super | this |
---|---|---|
引用对象 | 父类对象 | 当前对象 |
使用场景 | 主要用于继承关系中 | 可用于任何类中 |
调用构造器 | 必须位于子类构造器第一行 | 必须位于构造器第一行 |
访问权限 | 只能访问父类可见的成员 | 可以访问当前类所有成员 |
链式调用 | 不能链式调用(super.super 非法) | 可以链式调用(this.this 非法) |
静态上下文 | 不能在静态方法/块中使用 | 不能在静态方法/块中使用 |
代码示例
class Parent { String name = "Parent"; void display() { System.out.println("Parent's display"); } } class Child extends Parent { String name = "Child"; Child() { tjavascripthis("Default"); // 调用本类的另一个构造器 } Child(String name) { super(); // 调用父类构造器 this.name = name; } void display() { System.out.println("Child's display"); } void show() { System.out.println(super.name); // 访问父类的name System.out.println(this.name); // 访问本类的name super.display(); javascript// 调用父类的display this.display(); // 调用本类的display } } public class Main { public static void main(String[] args) { Child child = new Child("Test")python; child.show(); } }
输出结果:
Parent
TestParent's displayChild's display
总结
使用
super
主要是为了在子类中明确访问父类的成员,避免与子类成员混淆使用
this
主要是为了在类内部明确访问当前对象的成员,避免与局部变量混淆两者都可以用于构造器调用,但都必须位于构造器的第一行
在静态上下文中,两者都不能使用
到此这篇关于Java中super与this关键字的用途及区别详解的文章就介绍到这了,更多相关Java中super与this关键字内容请搜索编程客栈(www.devze.com)以前的文章或继续浏览下面的相关文章希望大家以后多多支持编程客栈(www.devze.com)!
精彩评论