class Char{

public void say(){
System.out.println("I am character");
} static void hello(){
System.out.println("hello,everybody");
}
}class A extends Char{ public void say(){
System.out.println("I am char \"A\"");
} static void hello(){
System.out.println("hello,everybody\"A\"");
}
void A(){
Char.hello();
}
}public class StaticAndFinal{
public static void main(String[] args){
Char c = new A();
c.hello();
}
}这里写了2个静态的hello方法,不存在重写,那么加载的时候内存里面是不是有2个同名的hello方法存在?
还有为什么调用A的构造方法的时候方法体里面的Char.hello()没有运行呢??

解决方案 »

  1.   

    加多一个问题,如果将Char.hello()放在A的hello()中,通过A a = new A(); a.hello();调用A的hello();后就会运行里面那句Char.hello().为什么放在构造方法里面不行?
      

  2.   


    你那个是构造体么........ 前面有个void  ,构造函数有返回值么,
      

  3.   

    void A(){ 
    Char.hello(); 
    } 仔细看好,这是构造器吗??????呵呵,这只是个无返回值的方法而已....
    -----------------------------------------------------------------------
    如果你在a.hello();中执行了Char.hello(),那就已经证明内存里有两个同名的hello方法的存在了