java方法重写问题 我做了一些程序,得到如下四个结论:1.静态方法可以覆盖静态方法。2.非静态方法可以覆盖非静态方法。3.静态方法不可以覆盖非静态方法。4.非静态方法不可以覆盖静态方法。1和2我了解一些,但3和4不清楚,高手给我讲一下3、4吧。 解决方案 » 免费领取超大流量手机卡,每月29元包185G流量+100分钟通话, 中国电信官方发货 1是错的,子类中的静态方法和父类即使签名相同也是两个不一样的方法,静态方法是类方法,调用哪个方法是在编译期确定的例如Animal a=new Dog();a.eat();//假设eat是一个static得,且Animal里和Dog里的eat签名是一样的,那么这句话调用Animal的eat方法,因为调用哪个静态方法是在编译期决定的,而且不鼓励这用用实例调用static方法做法3的道理同上4的道理也是同上 对2楼的一点补充:在Java语言规范(Java Language Specification)中,重写是针对实例(非静态)方法的,对于类(静态)方法,如果子类中有一个静态方法的签名与父类的一样,则叫做隐藏(hiding)总结:静态/实例方法(static method/instance method):重写(overriding)非静态/类方法(non-static method/class method):隐藏(hiding) 其实对静态来说根本就没有重写这么一说。只是叫冲突。重写是对动态来说的,也就是对面向对象来说的。3.静态方法不可以覆盖非静态方法。4.非静态方法不可以覆盖静态方法。 这个冲突 viszl也举了例子了。记住重写只会是父子类之间的动态方法上,如果重写都不成功,那不叫重写! 2楼的总结正好写反了静态方法没有override这个说法, 我也没有说static method有重写的说法啊... JTextPane 如何换行缩进 如何在TimerTask中使用传入的connection对象 优先队列删除元素的问题 怎么不能调用brownhorse(); JButton 的settext( ) 与setAction 哪位会java的朋友帮个忙,帮忙看看这道考试的题目怎么做, 谁能给我一个ftp上传和下栽文件夹的原码 帮忙看一个很短的小程序,送分!高手帮忙 我的疑惑? 在jbuider5里面 怎么生成 .exe文件?做好的工程又该怎么打包? 请教高手关于java运算符的一个小问题 快速排序的问题
例如Animal a=new Dog();
a.eat();//假设eat是一个static得,且Animal里和Dog里的eat签名是一样的,那么这句话调用Animal的eat方法,因为调用哪个静态方法是在编译期决定的,而且不鼓励这用用实例调用static方法做法
3的道理同上
4的道理也是同上
在Java语言规范(Java Language Specification)中,重写是针对实例(非静态)方法的,对于类(静态)方法,如果子类中有一个静态方法的签名与父类的一样,则叫做隐藏(hiding)总结:
静态/实例方法(static method/instance method):重写(overriding)
非静态/类方法(non-static method/class method):隐藏(hiding)
3.静态方法不可以覆盖非静态方法。
4.非静态方法不可以覆盖静态方法。
这个冲突 viszl也举了例子了。
记住重写只会是父子类之间的动态方法上,如果重写都不成功,那不叫重写!