java中的this关键字和super关键字的四种用法
this关键字的四种用法
this关键字的第一种用法:
代表对象,根据四种不同的使用方式代表不同的对象
场景
:(子)类的实例方法或子类的构造器中
格式
:this.实例变量名。
this.实例方法名(实参)
作用
:
用来调用该对象的实例变量或实例方法
注意
: 当实例方法中如果没有同名的局部变量,调用的实例变量或实例方法如果没有去写this关键字,由JVM的编译器隐式进行补全
含义
: 哪个对象调用了this关键字所在(子)类的构造器或(子) 类的实例方法,this关键字就代表那个对象。
this关键字的第二种用法:
场景
:(子)类的构造器中
格式
:this(实参)
作用
:
调用本类中其他的构造器
含义
:当构造器本身无法进行初始化工作时,需要使用this(实参)访问本类中去其他的构造器完成对象成员的初始化工作。
注意
:
1.this(实参)必须写在构造器中的第一行
2.如果在构造器中出现了this(实参),构造器中的第二个执行顺序内容不会被隐式加载(实例成员和构造器代码块)
this关键字的第三种用法
场景
父类中
(父类中的this就代表多态名的调用)
格式
this.实例变量名;
this.实例方法名(实参);
作用
:
使用多态形式的对象调用实例变量或实例方法
含义
:
哪个对象调用了父类中的this,this关键字就代表该对象的多态形式
this关键字的第四种用法
场景
:
实例内部类的构造器中或实例方法中
格式
:
外部类类名.this.实例变量名;
外部类类名.this.实例方法名(实参);
作用
:
在内部类中调用外部类同名的实例变量或实例方法
含义
:
哪个对象调用”外部类类名.this”所在的实例方法或构造器,“外部类类名.this” 就代表哪个对象的外部类对象
super关键字的四种用法
super关键字的第一种用法
场景
:
子类的构造器中或子类的实例方法
格式
:
super.实例变量名;
super.实例方法名(实参);
作用
:
用来区分子父类继承关系中同名的实例变量或实例方法
含义
:
哪个对象调用了super关键字所在的构造器或实例方法,super关键字就代表哪个对象的父类引用
super关键字的第二种用法
场景
:
子类的构造器中
格式
:
super(实参);
作用
:
调用本类的父类对应参数的构造器
含义
:
在初始化子类对象之前,通过super(实参)调用父类的构造器完成父类成员的初始化工作
super关键字的第三种用法:
场景
:
实现类重写接口中默认方法后的方法中
格式
:
接口名.super.默认方法名(实参);
作用
:
调用指定父接口中的默认方法
含义
:
哪个对象调用了”接口名.super.默认方法名(实参)”所在的实例方法,”接口名.super”就代表哪个对象的父接口引用
super关键字的第四种用法
场景
:
实例内部类的构造器中或实例方法中
格式
:
外部类类名.super.实例变量名;
外部类类名.super.实例方法名(实参);
作用
:
在内部类中调用外部类父类的实例变量或实例方法
含义
:
哪个对象调用”外部类类名.super”所在的实例方法或构造器,”外部类类名.super”就代表哪个对象的外部类对象的父类引用