1. static String staticname(){class Subclass extends Base{static String staticname(){public static void main(String[] args){ Subclass s = new Subclass(); System.out.println(s.x+" "+s.y+" "+s.name()+" "+s.staticname()); System.out.println(s1.x+" "+s1.y+" "+s1.name()+" "+s1.staticname());
    1. 父类的实例方法被子类的同名实例方法覆盖;父类的静态方法被子类的同名静态方法隐藏
    2. 父类的实例变量和类变量可以被子类的实例变量和类变量隐藏
    3. 通过父类引用可以暴露隐藏的变量和方法。

    就”Base s1 = s”来说:把s赋值给s1时,s(子类)的方法name已经把父类的name方法覆盖了,却没有覆盖static name,而是隐藏了它。赋值给s1后,s1的name方法已经变成了”baby”,而staticname方法只是被隐藏而没有被覆盖,现在有还原成了”static mother”

    转:Java子类与父类方法的隐藏和覆盖


    用于辅证结论3

            System.out.println(this.name);
    

    输出

    luo
    

    https://blog.csdn.net/jdbdh/article/details/81564940 ```