A股上市公司传智教育(股票代码 003032)旗下技术交流社区北京昌平校区

 找回密码
 加入黑马

QQ登录

只需一步,快速开始

© IT人 中级黑马   /  2014-2-3 17:28  /  1258 人查看  /  2 人回复  /   0 人收藏 转载请遵从CC协议 禁止商业使用本文

严格来说语法上静态方法时允许被覆盖的,但是即使覆盖了,也会被隐藏,就是没有意义的。
所以就说静态方法不能覆盖例如:
class Fu{
public static String method(){
return "hello,world";
}
}
class Zi extends Fu
{
public static String method(){
return "good person";
}
}
class Test{
public static void main(String[] args){
Zi zi = new Zi();
System.out.println(zi.method);
}
}
打印的结果就是父类方法中的返回值
隐藏的底层原理是啥!请高手解答!!!

评分

参与人数 1技术分 +1 收起 理由
ily521125 + 1

查看全部评分

2 个回复

倒序浏览
对不起,上边我说的有错误!打印结果是子类的!不是不能被覆盖么!还有为什么说被隐藏
回复 使用道具 举报
若父类的static 方法,子类可以访问时,则:能继承,但不能重写(重写只针对非static方法)。
即使在子类中有一个与父类具有相同方法标签(方法名相同,参数类型相同,返回值类型相同,甚至连访问级别也相同),也只能说明是对子类又新建了一个与父类同名的静态方法,而不是对父类的静态方法的重写.

评分

参与人数 1技术分 +1 收起 理由
ily521125 + 1

查看全部评分

回复 使用道具 举报
您需要登录后才可以回帖 登录 | 加入黑马