一、重写(Override)
1.方法重写
重写(Override)是指子类定义了一个与其父类中具有相同名称、参数列表和返回类型的方法,并且子类方法的实现覆盖了父类方法的实现。 即外壳不变,核心重写!
重写的好处在于子类可以根据需要,定义特定于自己的行为。也就是说子类能够根据需要实现父类的方法。这样,在使用子类对象调用该方法时,将执行子类中的方法而不是父类中的方法。
重写方法不能抛出新的检查异常或者比被重写方法申明更加宽泛的异常。例如: 父类的一个方法申明了一个检查异常 IOException,但是在重写这个方法的时候不能抛出 Exception 异常,因为 Exception 是 IOException 的父类,抛出 IOException 异常或者 IOException 的子类异常。
在面向对象原则里,重写意味着可以重写任何现有方法。
实例:
父类 Phone:
public class Phone {
public void call() {
System.out.println("开始打电话~~~~");
}
public void sendMessage() {
System.out.println("开始发送短信~~~~");
}
}
子类 NewPhone 继承父类 Phone:
public class NewPhone extends Phone {
/**
* call方法重写
*/
@Override
public void call() {
super.call(); // super 调用父类方法
System.out.println("支持语音通话和视频通话~~~~");
}
/**
* sendMessage方法重写
*/
@Override
public void sendMessage() {
// super.sendMessage(); // 不用 super 调用父类方法
System.out.println("支持发送图片和视频~~~~");
}
}
测试类: