当子类的方法出现和父类同名的方法叫做方法的重写(复写),若想访问父类的方法用super.方法名();但是必须放在子类重写的方法里。(语句必须写在方法里)
方法重写注意事项:
- 父类中私有方法不能被重写,因为父类私有方法子类无法继承
- 子类重写父类方法时,权限大于等于父类
- 父类静态方法,子类也必须通过静态方法进行重写(多态:静态覆盖静态)
- 若子类比父类参数不同,则不叫重写,叫重载
Override(重写)和Overload(重载)区别:
- Overload只看参数列表,可以改变返回值类型
- 方法重写:子类中出现了和父类中方法声明一模一样的方法
- 方法重载:本类中出现的方法名一样,参数列表不同的方法,与返回值无关
- 子类对象调用方法的时候,先找子类本身,如果没有再找父类
final关键字:可以修饰类,方法,变量。子类无法继承带final的父类;子类中的重写方法无法覆盖父类带final的同名方法(无法重写父类方法);final修饰的变量为常量,值不可以被改变,但是必须要初始化(赋值);final修饰引用数据类型变量不改变其地址值,但是可以改变对象的属性值。
final修饰的变量:
- 第一种赋值,定义时就直接赋值
- 第二种赋值,构造函数赋值