浏览 5295 次
锁定老帖子 主题:静态方法继承和覆盖
精华帖 (0) :: 良好帖 (0) :: 新手帖 (1) :: 隐藏帖 (2)
|
|
---|---|
作者 | 正文 |
发表时间:2009-09-02
最后修改:2010-02-23
static的方法到底能不能覆盖? 1.定义StaticExt类 package com.freelunch.test; public class StaticExt { public static void test() { System.out.println("father"); } } package com.freelunch.test; public class StaticExtSon extends StaticExt{ public static void test() { System.out.println("son"); } public static void main(String[] args) { StaticExtSon.test(); // "son" new StaticExtSon().test(); // "son" StaticExt f = new StaticExtSon(); f.test();// "father" } }
输出: son
3. 结论 静态方法只与定义时所在的类相关,在编译期就已经绑定到某个类。可以继承,但不能在子类中被同名方法覆盖。 由定义引用的类型决定调用的是父类还是子类的方法。
声明:ITeye文章版权属于作者,受法律保护。没有作者书面许可不得转载。
推荐链接
|
|
返回顶楼 | |
发表时间:2009-09-04
static的方法是不能被覆盖的
|
|
返回顶楼 | |
发表时间:2009-09-04
这种帖子不隐藏 只会对后来人产生误导
|
|
返回顶楼 | |
发表时间:2009-09-04
静态方法是不能被覆盖的 而是被隐藏了
通过父类的引用调用的是父类的静态方法 |
|
返回顶楼 | |
发表时间:2009-09-05
qianhd 写道 这种帖子不隐藏 只会对后来人产生误导
可能我的表述确实有些问题,对新手来说会有一定的误导,献丑了 :( PS:各位大哥说的有理,但我也没有说静态方法能够被覆盖呀。 |
|
返回顶楼 | |
发表时间:2010-06-06
无意搜到了这个帖子
我为什么觉得静态方法是不能被继承的呢?也就根本谈不上覆盖了 当StaticExtSon没有写test()方法时,根本就不能使用StaticExtSon.test()静态方法。 楼主的例子只能说明静态方法是早绑定。 |
|
返回顶楼 | |