this和super

Posted daidai66

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了this和super相关的知识,希望对你有一定的参考价值。

this

1、this表示当前对象

2、它可以出现在:

(1)非静态代码块和构造器:this表示正在new的那个对象

(2)非静态方法:this表示调用这个方法的对象

3、用法:

(1)this.成员变量

  • 当成员变量与局部变量同名时,在成员变量的前面加“this.”
  • 这个成员变量可以是本类声明的,也可以从父类继承的,但是要求是在子类中可见的成员变量并且是不和子类的成员变量同名

(2)this.成员方法

  • 这个成员方法可以是本类声明的,也可以从父类继承的,但是要求是在子类中可见的成员方法,并且是没有重写

(3)this()和this(实参列表)

  • 只能访问本类的其他构造器
  • 而且必须在构造器首行

super

1、super:表示当前对象中从父类继承的

2、通过super访问的成员变量、成员方法、构造器等,都必须在子类中可见

3、用法

(1)super.成员变量

  • 当子类的成员变量与从父类继承的在子类中依然可见的成员变量同名时,可以使用“super.成员变量”来区别
  • 当然,就算不同名,通过“super.成员变量”也可访问到从父类继承的在子类中依然可见的成员变量

(2)super.成员方法

  • 当子类重写了父类的成员方法,又想要调用父类被重写的成员方法时,可以使用“super.成员方法”
  • 当然,不重写的话,也可以通过“super.成员方法”来访问从父类中继承的在子类中依然可以见的成员方法

(3)super()或super(实参列表)

  • 表示访问父类的实例初始化方法
  • 而且必须在子类构造器的首行
  • this()和this(实参列表)与super()或super(实参列表)不能同时出现

就近原则

  • super一定是从当前对象类型的直接父类开始找
  • this一定是从当前对象类型的本类的成员开始找
  • 即没有this又没有super,如果是变量一定是从局部变量开始找,如果是方法就从当前对象类型的本类的方法开始找

以上是关于this和super的主要内容,如果未能解决你的问题,请参考以下文章

python super

mysql的所有权限

调用父类的三种方法

uper关键字 super

关于继承中的super()调用父类构造方法

(原)java 向上转型中,任何域的访问操作都是由编译器解析,不是多态