大神过来帮我解答一下,在此先谢了!

解决方案 »

  1.   

    static修饰的方法属于类。
    虽然用对象调用,其实底层依然使用的类名来调用。
    a的类型为A。
    所以,a.show(); 等价于A.show ();
    因此执行的方法依然是A类中的方法!
      

  2.   


    class A{

    public static void me1(){
    System.out.println(1111);
    }
    public void me2(){
    System.out.println(1111);
    }
    }
    class B extends A{
    @Override
    public static void me1(){
    System.out.println(1111);
    }
    @Override
    public void me2(){
    System.out.println(1111);
    }
    }
    可以在子类的方法名上加上@Override注解,如果报错就不是重写
      

  3.   

    static修饰的方法为类的方法,属于类,不属于对象实例。A a=new B();
    a.show();这里的a.show(),看似是a这个对象实例调用了show方法,但是由于这是静态方法,不属于a这个对象实例,而属于A这个类, 等同于A.show(),所以结果是AAA
      

  4.   

    首先要知道,为什么需要重写(Override)?
    因为一个对象里不能有两个签名一样的方法。
    但是,static 方法不是在对象中的,是在类,既然A和B是两个不同的类,那么也就不存在static方法重写的必要了,所以这里不会重写,事实上,Java称之为Hiding.
    参考
    https://stackoverflow.com/questions/2475259/can-i-override-and-overload-static-methods-in-java