课时71 准确的覆写:@Override
摘要:当子类继承某一个父类之后,如果发现父类中的某些功能不足的时候,往往会采用覆写的形式来对方法功能进行扩充,于是下面首先来观察一种覆写操作:
1. 观察覆写的问题
2. 追加注释
01 观察覆写的问题
1.1 范例
我们简单的写一个程序代码:
class Channel { public void connect() { System.out.println("********** Channel **********"); } } class DatabaseChannel extends Channel { public void connect() { System.out.println("子类定义的通道连接操作。"); } } public class JavaDemo { public static void main(String args[]) { new DatabaseChannel().connect(); } }
编译结果为:
1.2 开发中可能会出现的问题
①虽然要明确的继承一个父类并且进行方法的覆写,但是有可能由于疏忽忘记编写 Extends,这种情况并不是覆写。
②在进行覆写时单词写错。此时几遍单词写错了,实际上程序在编译的时候也不会出现任何错误信息,因为它认为这是一个新的方法。所以在开发中为了避免这种问题的出现,可以在明确覆写的方法上追加一个注解。
02 追加注释
代码如下:
class Channel { public void connect() { System.out.println("************ Channel ************"); } } class DatabaseChannel extends Channel { @Override // 明确表示该方法是一个覆写来的方法 public void connection() { System.out.println("子类定义的通道连接操作。"); } } public class JavaDemo { public static void main(String args[]) { new DatabaseChannel().connect(); } }
如图所示,在代码中加上 @Override,此时明确表示该方法是一个覆写来的方法。此时暗示很明显,是覆写吗?并不是。
编译结果如下:错误。
此时将名词修改正确,并且再次编译,如下:
class Channel { public void connect() { System.out.println("********** Channel **********"); } } class DatabaseChannel extends Channel { @Override // 明确表示该方法是一个覆写来的方法 public void connect() { System.out.println("子类定义的通道连接操作。"); } } public class JavaDemo { public static void main(String args[]) { new DatabaseChannel().connect(); } }
编译结果为:
此时结果正常。
@Override // 明确表示该方法是一个覆写来的方法 public void connect() { System.out.println("子类定义的通道连接操作。"); }
该注释主要是帮助开发者在程序编译的时候可以检查出程序的错误。
若代码百分百正确则不需要用到,可是我们并不能保证不会出错,若出错查不出来容易耽误较多时长,所以通过它,能保证覆写的准确性。