当前位置: 首页> 游戏> 攻略 > 在 Java 中,super关键字和this关键字的区别

在 Java 中,super关键字和this关键字的区别

时间:2025/7/9 12:28:48来源:https://blog.csdn.net/yanghaitao5000/article/details/142338161 浏览次数:0次

在 Java 中,super关键字和this关键字的区别如下:

一、指代对象不同

  • this

    • 代表当前对象的引用。即正在调用成员方法或构造方法的那个对象实例。
    • 例如,在一个类的方法中,this可以用来引用当前对象的成员变量和方法。
  • super

    • 代表父类对象的引用。可以通过它来访问父类的成员变量、方法和构造方法。

二、用法不同

2.1 访问成员变量

  • this:用于区分局部变量和成员变量,当方法中的局部变量与成员变量同名时,可以使用this.成员变量名来访问成员变量。例如:
   public class MyClass {private int num;public MyClass(int num) {this.num = num;}}
  • super:当子类和父类有同名成员变量时,可以使用super.成员变量名来访问父类的成员变量。例如:
   class Parent {int num = 10;}class Child extends Parent {int num = 20;void print() {System.out.println("Child's num: " + this.num);System.out.println("Parent's num: " + super.num);}}

2.2 调用方法:

  • this:可以使用this.方法名()来调用当前类的其他方法。例如:
   public class MyClass {public void method1() {System.out.println("Method 1");this.method2();}public void method2() {System.out.println("Method 2");}}
  • super:可以使用super.方法名()来调用父类被重写的方法。例如:
   class Parent {void show() {System.out.println("Parent's show method");}}class Child extends Parent {@Overridevoid show() {System.out.println("Child's show method");super.show();}}

2.3 调用构造方法:

  • this:在构造方法中,this()用于调用同一类中的其他构造方法,且必须放在构造方法的第一行。例如: 
   public class MyClass {private int num;public MyClass() {this(10);}public MyClass(int num) {this.num = num;}}
  • super:在子类的构造方法中,super()用于调用父类的构造方法,且也必须放在构造方法的第一行。例如:
   class Parent {public Parent() {System.out.println("Parent constructor");}}class Child extends Parent {public Child() {super();System.out.println("Child constructor");}}

三、使用场景不同

  • this

    • 通常用于解决成员变量的命名冲突、在一个类的内部方法之间进行调用等场景。
    • 在构造方法中,用于区分参数名和成员变量名,并调用同一类的其他构造方法以实现代码复用。
  • super

    • 主要用于访问父类的成员变量和方法,尤其是在子类中需要调用父类被重写的方法或访问被隐藏的成员变量时。
    • 在子类的构造方法中调用父类的构造方法,以确保父类的初始化工作先完成。
关键字:在 Java 中,super关键字和this关键字的区别

版权声明:

本网仅为发布的内容提供存储空间,不对发表、转载的内容提供任何形式的保证。凡本网注明“来源:XXX网络”的作品,均转载自其它媒体,著作权归作者所有,商业转载请联系作者获得授权,非商业转载请注明出处。

我们尊重并感谢每一位作者,均已注明文章来源和作者。如因作品内容、版权或其它问题,请及时与我们联系,联系邮箱:809451989@qq.com,投稿邮箱:809451989@qq.com

责任编辑: