方法的重写(override):重新写、覆盖
1)发生在父子类中,方法名相同,参数列表相同,方法体不同
2)重写方法被调用时,看对象的类型---------这是规定,记住就行了
(向上造型的时候,是看引用的类型)
3)重写需遵循"两同两小一大"原则:-----------了解,一般都是一模一样的
3.1)两同:
3.1.1)方法名相同
3.1.2)参数列表相同
3.2)两小:
3.2.1)派生类方法的返回值类型小于或等于超类方法的
1)void时,必须相等
2)基本类型时,必须相等
3)引用类型时,小于或等于
3.2.2)派生类方法抛出的异常小于或等于超类方法的
3.3)一大:
3.3.1)派生类方法的访问权限大于或等于超类方法的
//重写的演示
public class OverrideDemo {
public static void main(String[] args) {
}
}
//超类大,派生类小
class Coo{ //超类
void show() {}
double test() { return 0.0; }
Doo say() { return null; }
Coo sayHi() { return null; }
}
class Doo extends Coo{ //派生类
//int show() { return 1;} //编译错误,void时必须相同
//int test() { return 0; } //编译错误,基本类型时必须相同
//Coo say() { return null; } //编译错误,引用类型时必须小于或等于
Doo sayHi() { return null; } //正确
}