方法的重写:
1、在子类中可以根据需要对从基类中继承来的方法进行重写。
2、重写的方法和被重写的方法必须具有相同方法名称、参数列表和返回类型。(注:返回值可以为父类中返回值的子类型.参数若为子类,则不是重写是重载)
3、重写方法不能使用比被重写的方法更严格的访问权限。
4. 重写方法不能声明抛出比被重写方法范围更大的异常类型。
总结:重写是子类对所继承父类相同方法的一种更改,这个更改需要遵循格式按照父类的格式,访问权限,抛出异常等等,都在父类方法控制范围内,内部具体实现可以实现不同的效果。
通俗一点来说:重写就是对父类的的同一个方法的改写,但是别人怎么知道你这是重写,不是添加的新方法?这就要求格式必须跟父类相同,别人一看,呀,他俩长的一模一样(指的上面2,3,4规则),肯定是重新写了,就是重写。
father.java
package chongxie; public class father { void eat(){ System.out.println("父亲吃了"); } }
son.java
package chongxie; public class son extends father{ void eat() { System.out.println("儿子吃了"); } }
chongxie.java
package chongxie; public class chongxie { public static void main(String[] args) { father father= new father(); son son = new son(); father.eat(); son.eat(); } }
这时子类调用的是自己的方法,这就是重写了。
下面更改一下子类的方法名
son.java
package chongxie; public class son extends father{ void walk() { System.out.println("儿子吃了"); } }
在主函数继续调用eat函数
chongxie.java
package chongxie; public class chongxie { public static void main(String[] args) { father father= new father(); son son = new son(); father.eat(); son.eat(); } }
对于为什么要重写?
重写的话,也能实现代码的多样性。
子类继承了父类之后,调用父类的方法,就不需要重复写,节省代码量。
如果使用条件变更,父类的方法不能满足使用需求,那么你就需要重写方法了,把父类的方法覆盖掉。
接下来可以仔细学习一下多态,也能加深对重写的理解