java中的静态方法不能被继承

时间:2023-02-13 13:08:27

子类中的静态方法不会覆盖父类中的同名的静态方法:

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方法,才是按"运行时期的类型"进行调用的.