父子类的同名属性并不会直接覆盖掉,而是存在不同的域当中,静态引用是谁的属性那最后访问的就是谁的属性,要设置或获取访问父类的属性可以用super
静态方法的重写是绑定静态引用的
public class TT {
public static void ss(){
System.out.println("f");
}
public static void main(String[] args) {
TT.ss();
S.ss();
TT s=new S();
s.ss();
}
}
class S extends TT{
public static void ss(){
System.out.println("s");
}
}
结果
静态方法只会和静态的类有关,S隐藏了父类的静态方法
而s编译时绑定应该是TT类。