this是自身的一个对象,代表对象本身,可以理解为:指向对象本身的一个指针,代表本类对象的引用
super可以理解为指向自己父类对象的指针,而这个父类只的是离自己最近的一个父类
注意:this指本身对象,super指父类对象,所以在静态方法和静态的代码块中不能有this和super
使用方法
- 如果子类中出现非私有的同名变量,要引用时:
(1) 访问父类中的同名变量,用super.变量
(2) 访问子类本类中的变量,用this.变量 - 如果子类重写方法时,要引用父类中的已经定义好的功能时,用super.方法
- 如果子类中的构造函数需要指定父类中其他构造函数进行初始化,使用super(参数)的形式
- 如果子类中的构造函数中,需要引用父类中已经定义好的方法,使用super.方法(参数)
子类继承父类的构造方法
当子类继承父类后,所有的构造函数都会在内部的第一行加上隐式的super(),super()是访问父类中的构造函数,意味着子类的自动初始化,即调用父类的空参数的构造函数
当需要指定父类的构造函数来进行初始化时,手动添加super.("参数")的形式来访问父类中的构造函数。如下在更新残疾孩子出生状况时,通过访问父类中的残疾孩子出生的构造函数,来改变默认访问空参数“哇的一声哭出来”的构造函数
this()与super()
super()函数
super()函数在子类构造函数中调用父类的构造函数时使用,而且必须要在构造函数的第一行。
this()函数
this()函数主要应用于同一类中从某个构造函数调用另一个重载版的构造函数。this()只能用在构造函数中,并且也只能在第一行。所以在同一个构造函数中this()和super()不能同时出现。
不同点:
1、super()主要是对父类构造函数的调用,this()是对重载构造函数的调用
2、super()主要是在继承了父类的子类的构造函数中使用,是在不同类中的使用;this()主要是在同一类的不同构造函数中的使用
相同点:
1、super()和this()都必须在构造函数的第一行进行调用,否则就是错误的