接下来将详细分析this和super的作用和区别。
3、this
this相当于当前对象实例,或者当前对象的一个引用,this有如下作用:
- 调用当前对象中的方法和属性
- 区分对象属性和方法形参
- 调用构造方法(必须在构造函数的第一行)
this相当于当前对象实例举例:
4、super
super可以理解为父类(直接父类,如果有多层继承关系这里指的是最近的父类)对象的引用。super有如下的作用:
- 调用父类非私有的属性和方法
- 区分当前类与父类同名的属性和方法
- 调用父类的构造函数(必须在构造函数的第一行)
调用父类属性和方法示例:区分当前类与父类同名的属性和方法示例:
/** * 父类 */ public class Father { public String name; public void doSomething3() { // toDo } public void doSomething4() { // toDo } } /** * 子类代码修改成如下 */ public class Son extends Father { public String name; public void doSomething() { // super可以区分父类方法与当前对象的方法 doSomething3(); doSomething4(); super.doSomething3(); super.doSomething4(); // 区分当前父类的属性与当前类的属性 String fatherName = super.name; String sonName = name; } @Override public void doSomething3() { // todo } @Override public void doSomething4() { // todo } }
调用父类的构造函数(必须在构造函数的第一行)
5、总结
5.1 对比差异
this 基本概念
访问本类实例属性和方法
super 基本概念
访问父类实例属性和方法
this 查找范围
先查找本类,不存在再查找父类
super 查找范围
直接查找父类
this 其他功能
单独使用表示当前对象
super 其他功能
子类复写父类方法,用于访问父类同名方法
5.2 相同点
都是关键字,起指代作用
构造方法中必须在第一行调用其它构造函数
5.3 总结图