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

 找回密码
 加入黑马

QQ登录

只需一步,快速开始

© 236gswqt 中级黑马   /  2014-6-26 16:32  /  809 人查看  /  3 人回复  /   0 人收藏 转载请遵从CC协议 禁止商业使用本文

     static修饰的方法能在子类中重写吗?

3 个回复

倒序浏览
不能,因为静态静态方法在类被装载时就已经加载,而非静态在运行时系统确定具体的内容。两种方法内存管理机制
回复 使用道具 举报
不能,因为静态静态方法在类被装载时就已经加载,而非静态在运行时系统确定具体的内容。两种方法内存管理机制完全不同,所以不能覆盖。



这个问题我也纠结过,以上解答也是从网上看到的,静态先与类存在,而非静态方法的重写是在类加载之后才会出现的所以说不同的两种机制。

你看下面的代码:



class A{
public static void show(){
  System.out.println("a show");
}
public void method(){
  System.out.println("a.method");
}
}
class B extends A{
public static void show(){
  System.out.println("b show");
}
public void method(){
  System.out.println("b.method");
}
}
public class Demo {

public static void main(String[] args){
  new B().method();//方法重写输出的是b.method
A a=new B();
  a.show();//静态方法,输出结果为a show,说明静态方法没有被重写,如果去掉两个静态就会输出b show了

不知道有没有解释清楚

评分

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

查看全部评分

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