thisuper和super关键字的作用和联系
this和super在面向对象编程中都起到了非常重要的作用,对于大部分初学者来说,这两个关键字的用途与联系还是模糊的,那么接下来让我们一起整理总结它们的作用与联系吧!
一、this(当前对象)
- 当成员变量与局部变量同名时,对成员变量进行区分
同名通常出现在构造方法或者属性注释器中,例如this调用当前对象的构造函数(IDEA快捷方式:alt+insert --> Getter and Setter --> OK)
设置无参和带参的构造方法(IDEA快捷方式:alt+insert --> Constructor --> Select None(无参)/OK(带参)自动生成)
-
构造方法调用:有些题目需要构造方法的相互调用,但是构造方法是不能通过构造方法的名字显示调用的,这时就可以用this()来实现调用本类的重载构造方法。例如用无参中调用有参
注意:此时this()必须放在构造方法所有语句的第一行哦!(附有参调用无参)
-
表示当前被引用的实例对象,可以访问对象成员(成员变量和成员方法)。通过加 this. 成员变量名 可以增强代码的可读性,较为常用。
二、super(在子类继承中用)
- 使用super调用父类的属性
注意:当在子类中定义了与父类同名的属性,且要引用父类的属性时,就必须要用super.属性名(这种情况很少见)
- 使用super调用父类中的方法,一般为子类方法与父类方法重名且父类方法不满足于子类,即方法覆盖也叫方法重写
- 使用super调用父类中的构造方法 子类虽然不能继承父类的构造方法,但是子类可以调用父类的构造方法,用到super(),且其必须时第一条语句。
三、this与super的联系(区别)
- 在构造方法中如果有this或super语句出现,则只能是第一条语句;
- 在一个构造方法中不允许同时出现使用this和super语句,因为this必然会调用其他的构造方法,其他的构造方法也会有super存在,故在同一个构造函数里面有相同的语句,失去了语句的意义,编译器也不会通过;
- 在类方法中不允许出现this或super关键字;
- 在实例方法中,this和super语句不要求是第一条语句,即可以共存;
- this()和super()都指的是对象,均不可以在static环境(变量、方法、语句块)中使用。