1.方法的重写:重新写
- 发生在父子类中,方法名相同,参数列表相同
- 重写方法被调用时,看对象的类型-------这是规定
class 餐馆{
void 做餐() { 做中餐 }
}
//1)我还是想做中餐----------------不需要重写
class Aoo extends 餐馆{
}
//2)我想改做西餐------------------需要重写
class Aoo extends 餐馆{
void 做餐() { 做西餐 }
}
//3)我想在中餐之上加入西餐---------需要重写(先super中餐,再加入西餐)
class Aoo extends 餐馆{
void 做餐() { super.做餐(); + 做西餐 }
}
2.重写遵循"两同两小一大"原则:-----------了解,一般都是一模一样的
两同:
方法名相同/参数列表相同
两小:
1.派生类方法的返回值类型小于或等于超类方法的
1.void和基本类型时,必须相等
2.引用类型时,小于或等于
2.派生类方法抛出的异常小于或等于超类方法的
一大:
派生类方法的访问权限大于或等于超类方法的
3.重写与重载的区别:-----------常见面试题
- 重写(override):发生在父子类中,方法名相同,参数列表相同
- 重载(overload):发生在同一类中,方法名相同,参数列表不同