Java~this和super的区别(清晰易懂)

this代表的是当前对象的引用,super代表父类的引用

  • this.data:访问当前对象的成员变量
  • this.fun():访问当前对象的成员方法
  • this():调用当前类的构造方法

  • super.data:访问父类的成员变量
  • super.fun():访问父类的成员方法
  • super():调用父类的构造方法

 注意点:

1.子类继承了父类,那么构造子类的时候,需要先构造父类,子类要先帮助父类构造。所以如果父类里面自己写了一个构造方法,原来的编译器自带的构造方法失效,在子类里面必须写一个构造方法来显示调用父类的构造方法,这个构造方法里面写super(参数)来帮助父类构造,且super()这句话必须放在第一行(默认每一个子类的构造方法都有一条隐式语句super()

2.this() 和super()都只能写在构造函数的第一行

3.this() 和super() 不能存在于同一个构造函数中。理由:第一,this()和super()都必须写在构造函数的第一行;第二,this()语句调用的是当前类的另一个构造函数而这个另一个构造函数中必然有一个父类的构造器,再使用super()又调用一次父类的构造器, 就相当于调用了两次父类的构造器,编译器不会通过

4.this和super不能用于static修饰的变量,方法,代码块;因为this和super都是指的是对象(实例)

Guess you like

Origin blog.csdn.net/qq_24016309/article/details/121389122