java中,到底overwrite和override有啥区别?

我的理解是 Java 中没有Overwrite,应该是和Override 的混用。http://stackoverflow.com/questions/837864/java-overloading-vs-overwriting
■网友
让我来终结这个话题吧。overwrite和override的说法在C++中讨论的比较多,也是基础,但是在java中则完全不同。---------------------------------分割线下面讨论范围为java---------------------------------先说结论:Override就是为了告诉使用者这个方法是overwrite了基类或者接口的方法。你不加,编译器也知道这个方法overwrite了基类或者接口的方法。再讲概念:子类或者接口实现类同名方法无论加或者不加@Override,其实都overwrite了基类或者接口方法(除非我们通过在基类的方法中调用super.work(),否则无论如何访问不到A.work())。 override解释:作用就是重写,可以重写(overwrite)基类或者接口的方法,这是一个关键词。(java中签名需要一致!)overwrite解释:子类方法与基类或者接口方法同名我们就称为overwrite,这是一个概念。不加@Override和加@Override都可以,不加理解上默认已经加过。但是如果加了而子类或者接口没有对应需要重写的方法则一定会报错。至于对于类的使用者有什么现象,是需要探索总结的。代码如下://所有的Override都可以去掉,效果一样!!!public class Test { public interface I{ int work(); } public class A implements I{ @Override public int work() { System.out.println("A works..."); return 0; } } public class B extends A{ } public class C extends A{ @Override public int work(){ System.out.println("C works..."); return 0; } } public class D extends A{ public int work(){ System.out.println("D works..."); return 0; } } public int work(){ A b = new B(); b.work(); System.out.println("----"); A c = new C(); c.work(); System.out.println("----"); A d = new D(); d.work(); return 0; } public static void main(String args){ BaseTest test = new BaseTest(); test.work(); } }


    推荐阅读