关于方法覆盖的一个概念问题 问题:可以定义与父类方法名相同,参数相同,返回值类型不同的方法吗? 例如:父类中有个方法: public void open(){...}子类中可以定义方法: public int open(){...} 吗?为什么? 解决方案 » 免费领取超大流量手机卡,每月29元包185G流量+100分钟通话, 中国电信官方发货 1、覆盖的方法的标志必须要和被覆盖的方法的标志完全匹配,才能达到覆盖的效果; 2、覆盖的方法的返回值必须和被覆盖的方法的返回一致; 3、覆盖的方法所抛出的异常必须和被覆盖方法的所抛出的异常一致,或者是其子类; 4、被覆盖的方法不能为private,否则在其子类中只是新定义了一个方法,并没有对其进行覆盖。 jdk 5以后对方法覆写(override) 增加了一个covariant return types 的特性,这个特性是说 如果子类中override的方法可以返回与父类方法不同的类型,但是返回的类型必须是父类方法返回类型的子类。比如父类中 Parent function(){....}子类中 Child function() {....}这样也算是覆写。 可以,你这个叫重写,不叫覆盖。Java隐没了virtual这个关键字,在C++里面可以指定这个关键字来达到区分覆盖和重写的差别。但是JVM里面的字节码有invokevirtual这个指令的。 肯定不行啊,覆盖要求签名一致的。这个是覆盖并非重载。_________________欢迎到我在技术圈的Java圈子做客: Java Guru 分治法求:数列最大子序列,出错,求解,谢谢! 分别输入了一元二次方程的三个系数,怎样简单输出整个方程? 求pdf书一本,书名《编程珠玑》第二版,要求是图灵的那本!谢谢 一道java题目 Java如何制作类似QQ消息记录的窗体 SQLServer自增长字段的问题 新手求助三大循环求解 请问在java中如何对组件进行精确定位???? 郁闷!!!,SQL Server 2000 for JDBC的数据库连接。 检验表单的checkbox是否选择,怎么不行?错在哪里?看里面的代码 关于JAVA正则表达式的一个疑惑:怎样匹配乘号*? oracle插入数据错误
2、覆盖的方法的返回值必须和被覆盖的方法的返回一致;
3、覆盖的方法所抛出的异常必须和被覆盖方法的所抛出的异常一致,或者是其子类;
4、被覆盖的方法不能为private,否则在其子类中只是新定义了一个方法,并没有对其进行覆盖。
父类中 Parent function(){....}
子类中 Child function() {....}
这样也算是覆写。
Java隐没了virtual这个关键字,在C++里面可以指定这个关键字来达到区分覆盖和重写的差别。
但是JVM里面的字节码有invokevirtual这个指令的。
_________________
欢迎到我在技术圈的Java圈子做客: Java Guru