Java day017 面向对象4.0(继承、重写override、abstract抽象类、重载overload、this、super、final关键字)
继承内存图
重写【override】
前提:
- 重写是存在于继承中子类,或者【遵从中的实现类】
- 重写的方法要求子类方法与父类的方法声明完全一致
- 方法体按照子类来完成
注意:
子类重写时必须加上@Override严格格式检查!
abstract关键字
用法:
abstract修饰的方法,子类必须重写!
示例:
abstract class Hero {
abstract public void q();
public void w();
}
class Ted extends Hero {
@Override
public void q() {
System.out.println("Q");
}
}
abstract特征:
- abstract修饰的方法没有方法体
- abstract修饰的方法要求在定义在abstract修饰的类内或者接口interface内
- abstract修饰的类没有实例化对象!
重载【override】
要求:
- 重载是要求在同一个类内,或者接口内
- 重载要求方法名必须一致
- 重载要求方法参数必须不一致
- 重载对于返回值没有任何约束
示例:
class Person {
public void play() {
System.out.println("wow");
}
public void play(String game) {
System.out.println(game);
}
public void play(String game, int hour) {
System.out.println("玩" + hour + "个小时" + game);
}
}
this关键字补
用法:
在一个构造方法中,可以通过this关键字调用其他构造方法,会根据实参的顺序、类型、个数选择调用的构造方法。
示例:
class Dog {
private String name;
private int age;
private String color;
public Dog() {
this(null, 0, null);
}
public Dog(String name) {
this(name, 0, null);
}
public Dog(String name, int age) {
this(name, age, null);
}
public Dog(String name, int age, String color) {
this.name = name;
this.age = age;
this.color = color;;
}
}
注意:
- 不能使用this调用当前所在构造方法,会陷入死递归
- 使用this调用构造参数时,this必须在第一行!!
- 规范化统一操作,提高代码安全性与一致性
super关键字
作用:
- 区分父类与子类同名的成员变量与成员方法
- super可以显式的调用父类构造方法,进行初始化父类成员变量与方法
- 规范与this类似
final关键字
作用:
- 修饰局部变量 有且只能被赋值一次,且赋值后不可再改变
- 成员变量 定义时必须初始化,否则会报错
- 成员方法 被final修饰的成员方法不可被重写
inal关键字
作用:
- 修饰局部变量 有且只能被赋值一次,且赋值后不可再改变
- 成员变量 定义时必须初始化,否则会报错
- 成员方法 被final修饰的成员方法不可被重写
- 类 没有子类,不可被继承