被覆盖比较好理解,类似于多态的实现,访问时通过类方法表来访问,你实际是什么类型,访问的方法就是那个类型的方法而不会是你的父类的方法。
被隐藏是指静态方法的访问是根据当前对象的表面类型来决定的,比如
Super s = new Sub();
s.greeting()访问的是Super的静态方法,如果是Sub s = new Sub();则访问的是Sub的静态方法。
换句话说,这个实现不了多态。
此外,静态方法和实例方法不能互相覆盖(会报错),因为他们的在字节码中的的绑定位置不同。
被覆盖比较好理解,类似于多态的实现,访问时通过类方法表来访问,你实际是什么类型,访问的方法就是那个类型的方法而不会是你的父类的方法。
被隐藏是指静态方法的访问是根据当前对象的表面类型来决定的,比如
Super s = new Sub();
s.greeting()访问的是Super的静态方法,如果是Sub s = new Sub();则访问的是Sub的静态方法。
换句话说,这个实现不了多态。
此外,静态方法和实例方法不能互相覆盖(会报错),因为他们的在字节码中的的绑定位置不同。