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(); } }
推荐阅读
- 联运■连云港港全国首推集装箱铁水联运“一单到底”
- 汽车知识|第八代高尔夫到底值不值得买?1.4T自动Pro版全款多少钱?
- 人潮汹涌|丁真爆火第20天,到底谁才是真正的“幕后推手”?华春莹为他连发三推
- dart这编程语言现在发展怎么样了,语法与Java,c#很相似,甚至更简洁
- 微博目前已经支持文本,图片,位置分享,为啥没有语音和视频呢微博的pm肯定想过这两种微博形态,但迟迟不做的原因到底是啥。是语音和视频不符合产
- 什么|到底是什么原因?宝宝易咳嗽
- 京广和公司到底是干啥的
- 董洁|40岁的董洁到底怎么啦?少女造型被吐槽,女性的温柔感也不见了
- 中兴努比亚 Z5 的边框到底有多窄
- 汽车知识|西装暴徒的代表,40w就能拥有百万级别的声浪,到底是什么车
