子类中的静态方法不会覆盖父类中的同名的静态方法:
public class Parents {
public static void staticMathod(){
System.out.println("parent's static");
}
public void nonStaticMathod(){
System.out.println("parent's nonstatic");
}
}
public class Childs extends Parents{
public static void staticMathod(){
System.out.println("child's static");
}
public void nonStaticMathod(){
System.out.println("child's nonstatic");
}
public static void main(String[] str){
Parents parent1=new Childs();
parent1.staticMathod();
parent1.nonStaticMathod();
}
}
输出结果:
parent's static
child's nonstatic
parent1 是Childs()对象的应用,本因输出
child's static
child's nonstatic
可见子类没有覆盖父类的方法,子类无法对父类的静态方法进行扩展。
主要原因:1)它是按"编译时期的类型"进行调用的,而不是按"运行时期的类型"进行调用的. 2)而非static方法,才是按"运行时期的类型"进行调用的.