与重写类似,方法的重写是子类覆盖父类的对象方法。隐藏,就是子类覆盖父类的类方法。
public class Hero {
public String name;
protected float hp;
public static void battlewin(){
System.out.println("hero battle win");
}
}
public class ADhero extends hero implements ad {
public static void battleWin(){
System.out.println("ad hero battle win");
}
}
Hero h =new ADHero();
h.battleWin(); //battleWin是一个类方法
h是父类类型的引用,但是指向一个子类对象
h.battleWin(); 会调用父类的方法?还是子类的方法?
虽然h指向的是一个子类对象,但是依然调用的是父类的类方法。
甚至在h指向一个空对象null的时候,也能够成功调用battleWin().
所以和h指向哪个对象无关,只和h的类型有关系。
当然,也不建议通过对象去调用类方法,而应该直接通过类去调用类方法,从而规避理解上的歧义。
public class Hero {
public String name;
protected float hp;
//类方法,静态方法
//通过类就可以直接调用
public static void battleWin(){
System.out.println("hero battle win");
}
public static void main(String[] args) {
Hero h =new ADHero();
h.battleWin();
h= null;
h.battleWin();
}
}