静态方法在语法上来说,于子类中重写是没有问题的,但是没有意义。
1 如果用父类的编译来引用子类的对象,再调用同名静态方法
可以发现,调用的是编译类型AA的 aa()方法。
2 如果将AA中的修饰符改为private ,则会报错。
个人理解:如果编译类型是AA,运行类型是子类BB,那么调用用 aa() 方法,是会对BB中的 aa() 视而不见的,会调用AA中的该静态方法。但是运行方法时又是会在BB的对象内调用,所以如果访问权限不够,就无法访问到该方法。
可见静态方法没有重写一说,与属性一样,无法触发动态绑定机制。
3直接使用类调用静态方法,两者则不牵扯。该输出什么就输出什么。