首先,为什么子类不能用static方法重写父类的非static方法,同样,子类不能用实例方法重写父类static方法?(我想知道原理)然后我想问一下下面的代码创建对象时候的内存状况(就是生成多少个空间,对象引用,方法的存放等...)class A{
String name = isName();
String isName(){
System.out.println("222222222");
return null;
}
A(){
System.out.println("333333333");
}}
class B extends A{
String name = isName();
String isName(){
super.isName();
System.out.println("1111111111");
        return "aa";
}
}
class Demo{
public static void main(String[] args){
A b=new B();

}
}谢谢各位的帮忙~

解决方案 »

  1.   

    回答你第一个问题吧。第二个问题不知道怎么说。
    static的方法是属于类的。一般的方法是属于实例的。好好理解哟
      

  2.   

    这么说吧,方法重写是针对实际的对象的,也就是实例方法之间的重写。但是静态的方法是分配在code segment中的,只有一块内存。静态方法是属于类的,不专属于某一个对象。类里的任何成员变量都能直接调用它。在虚拟机加载类的时候,静态代码块或者静态方法会被首先加载。所以子类根本不能重写父类的静态方法。
      

  3.   

    子类可以重写父类的方法,这时候父类的方法被覆盖了。但是子类可以再重载或者定义多个方法。它们都分配在code segment里,有多个方法。