方法的重写
2017-03-31 17:18
85 查看
/** 方法的重写:发生在父子类中,子类中的方法名、参数列表、返回值与父类相同 ,子类的权限修饰符大于等于父类的权限 */ class Parent{ public int getInt(){ return 0; } } class Demo9 extends Parent{ //这里的返回值与父类的不同,会报错 public void getInt(){ System.out.println("无返回值 "); } } class Test{ public static void main(String[] args){ Demo9 demo = new Demo9(); int a = demo.getInt(); System.out.println("如果这里a有值,说明getInt()方法没有被重写:"+a); } }
结果:
Parent.java:12: 错误: Demo9中的getInt()无法覆盖Parent中的getInt()
public void getInt(){
^
返回类型void与int不兼容
Parent.java:20: 错误: 不兼容的类型
int a = demo.getInt();
^
需要: int
找到: void
2 个错误
我个人认为,只所以会出现这个问题,还在于系统查找使用方法的顺序上。
因为创建的对像是Demo9,所以,demo在调用getInt()方法时,会先去Demo9中去找,找到了这个名字的方法,在执行时,去发现是无返回值 的,所以报错。如果方法名相同,完全可以抛却父类的那块单独单,如果可以匹配到当前调用,就不会报错,否则,就会出问题
相关文章推荐
- 利用IIS的404错误将文件重写成目录的简单方法
- 重写 Finalize 方法
- 虚方法、重写方法和抽象方法[转载]
- 方法的重载(overloading)与重写(overriding)
- [导入]C#继承类重写与隐藏基类方法的区别
- 重写方法不被认为是在类上声明的
- UrlRewriter重写地址的POSTBACK后,地址还原的解决方法
- asp.net下用url重写URLReWriter实现任意二级域名的方法第1/2页
- 重写——上转型对象不能操作子类新增成员变量和方法但可以操作子类继承和重写的方法
- 关于C#中,继承类重写与隐藏基类方法的区别!
- 方法的重载(overloading)与重写(overriding)
- 用重写FORMAT方法来实现 .NET 的自动文本缩减
- java学习中重写与重载方法的区别(转自:小鸟的天空)
- 小心重写方法,正确实现多态 选择自 schnell 的 Blog
- 重写equlas()方法的规则
- [CCS]China Community Server几乎所有被重写的URL都无法访问的解决方法
- 巧用重写toString的方法,输出格式的问题留给java帮我解决吧~
- 武侠世界中的:虚拟方法、重写方法、抽象方法
- C#继承类重写与隐藏基类方法的区别
- C#方法和属性重写几点说明