一、this
- this可以用来修饰属性、方法、构造器
- this修饰属性和方法时:
this理解为当前对象或当前正在创建的对象
2.1 在类的方法中,可以使用“this.属性”或“this.方法”,调用当前对象的属性或方法,通常我们可以省略this,但如果方法的形参与类的属性重名时,我们必须显式地使用this来表明次变量时属性,而非形参
2.2 在类的构造器中,可以使用“this.属性”或“this.方法”,调用当前正在创建的对象的属性或方法,通常我们可以省略this,但如果构造器的形参与类的属性重名时,我们必须显式地使用this来表明次变量时属性,而非形参
- this调用构造器
3.1 在类的构造器中,可以显式的使用“this(参数表)”的方式调用本类中其他的构造器
3.2 构造器中不能通过“this(参数表)”的方式调用自己
3.3 如果一个类这种有n个构造器,那么最多只能有n-1个构造器使用“this(参数表)”
3.4 “this(参数表)”必须声明在当前构造器的首行
3.5 构造器内部,最多只能声明一个“this(参数表)”,来调用其他构造器
二、super
- super可以理解为父类
- super可以调用:属性、方法、构造器
- super调用属性,方法
3.1 在子类的方法或构造器中,使用“super.属性”或“super.方法”的方式调用父类中声明的属性或方法,通常情况下可以省略super
3.2 当子类和父类中定义了同名的属性时,如果想在子类中调用父类的属性,那么必须显式的使用“super.属性”的方式,这表明调用的是父类的属性
3.3 当子类重写了父类的方法时,如果想在子类中调用父类中被重写的方法,那么必须显式的使用“super.方法”的方式,这表明调用的是父类中被重写的方法
- super调用构造器
4.1 我们可以使用“super(参数表)”的方法调用父类中的声明的构造器
4.2 “super(参数表)”使用时必须声明在子类构造器的首行
4.3 在类的构造器中“super(参数表)”和“this(参数表)”只能二选一,不能同时出现(因为它们都要求要放在构造器的首行)
4.4 在构造器首行没有显式声明“super(参数表)”或“this(参数表)”,则默认调用的是父类的空参构造器,即“super()”
4.5 子类的多个构造器中,至少有一个构造器调用“super(参数表)”的形式调用父类中的构造器