子类除了继承父类的方法外,当然可以随意添加自己的方法。所以编译器是不会报错的。但自己添加的静态方法
不能覆盖父类的静态方法。这种不能覆盖是指下面这种情况: frather f = new extendstatic (); f.fun1(); 在非
静态方法中,此时会调用子类的fun1()方法,但由于是静态方法,子类的fun1()方法不会覆盖父类的fun1()方法。
如下图:file:///C:/Documents%20and%20Settings/Administrator/Application%20Data/Tencent/Users/893434467/QQ/WinTemp/RichOle/QQO%7B%255P451K7OGZLMVTXP]X.jpg
下面是引用内容:
子类中的静态方法不会覆盖父类中的同名的静态方法:
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方法,才是按"运行时期的类型"进行调用的.
|
|