java,静态方法为什么不能继承?

[复制链接]
查看11 | 回复2 | 2010-2-2 17:49:23 | 显示全部楼层 |阅读模式
可以继承,例子:class A{ public static void a(){System.out.println("a"); }}class B extends A{}public class Test { public static void main(String[] args) {
B.a();//输出a,证明静态方法可以被继承 }}不能被覆写,例子:class A{ public static void a(){System.out.println("a"); }}class B extends A{ public static void a(){System.out.println("b"); }}public class Test { public static void main(String[] args) {
A a = new B();
a.a();//输出结果是a }}java不推荐用对象调用static方法,这会使人混淆,请大家注意。
回复

使用道具 举报

千问 | 2010-2-2 17:49:23 | 显示全部楼层
可以重写静态方法,但重写后的静态方法不支持多态。本质是因为对静态方法在运行期只查找显式声明的类的内存,这就意味着不可能是多态。虚拟机的运行方式就是这样,就是语法规定而已,没什么好解释的,至于什么公共不公共简直是胡扯,说了没说一样
回复

使用道具 举报

千问 | 2010-2-2 17:49:23 | 显示全部楼层
public class SubClass { public static void subMethod(){System.out.println("SubClass.subMethod()"); }public static void main(String[] args) {ChildClass.subMethod(); }}class ChildClass extends SubClass {public static void subMethod(){System.out.println("childClass.subMethod"); }}//结果证明是可以的 见:http://zhidao.baidu.com/question/94965522.html这些纯语法的东西,我掌握的也不好!
回复

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

主题

0

回帖

4882万

积分

论坛元老

Rank: 8Rank: 8

积分
48824836
热门排行