第1个回答 2015-01-13
/**
* 动物类
* @author tanqiao
*
*/
public class Animal {
public String eat() throws RuntimeException{//抛出运行时异常,修饰为public,无参数
return "食物";
}
}
public class Cat extends Animal{
@Override
public String eat() {
//这就是方法重写了,发生在继承关系中,必须满足与父类的该方法返回值类型,方法名和参数列表一致,而且访问不能比父类更严格,抛出的异常不能比父类更大(throws Exception就会报错)
return "吃鱼";
}
/**
* 重载,就是你说的复写吧
* @param s 带有了参数,修改了访问修饰,修改了返回值
* @return 结论:只要满足名字一样就是重载,与其他的无关
*/
void eat(String s) {//同一个类中
}
}
第2个回答 推荐于2017-09-30
java方法的重写 是发生在继承关系里头的,
比如 子类继承父类;
那么它有如下规则:
规则1: 子类的方法的名称及参数必须和父类方法的名称相同
规则2: 子类的方法的返回值类型必须和父类方法的返回值类型相同
规则3: 子类方法的访问权限不能小于父类方法的访问权限;例如:父类的访问权限是protected, 子类不能是private;只能是同级(protected)或者更高级(public)
规则4: 子类方法抛出的异常个数与父类方法的异常个数一致,且子类异常要比父类异常要小;例如:父类异常为Exception ,子类不能是classNotFoundException本回答被提问者采纳
第3个回答 2016-04-08
java方法重写语法法则:
A、重写规则之一:
重写方法不能比被重写方法限制有更严格的访问级别。
(但是可以更广泛,比如父类方法是包访问权限,子类的重写方法是public访问权限。) B、重写规则之二:
参数列表必须与被重写方法的相同。
重写有个孪生的弟弟叫重载,也就是后面要出场的。如果子类方法的参数与父类对应的方法不同,那么就是你认错人了,那是重载,不是重写。
C、重写规则之三:
返回类型必须与被重写方法的返回类型相同。
D、重写规则之四:
重写方法不能抛出新的异常或者比被重写方法声明的检查异常更广的检查异常。但是可以抛出更少,更有限或者不抛出异常。
E、重写规则之五:
不能重写被标识为final的方法。
F、重写规则之六:
如果一个方法不能被继承,则不能重写它。