静态方法可以被继承,但是不能被覆写。
package com.wantukang;
class Base {
public static void static_method() {
System.out.println("base static method");
}
public void method() {
System.out.println("base instance method");
}
}
class Child extends Base {
public void method() {
System.out.println("child instance method");
}
// public static void static_method() {
// System.out.println("child static_method");
// }
}
public class Test {
/**
* @param args
*/
public static void main(String[] args) {
Base base = new Base();
Child child = new Child();
base.static_method();
child.static_method();
}
}
输出:
base static method
base static method
package com.wantukang;
class Base {
public static void static_method() {
System.out.println("base static method");
}
public void method() {
System.out.println("base instance method");
}
}
class Child extends Base {
public void method() {
System.out.println("child instance method");
}
public static void static_method() {
System.out.println("child static_method");
}
}
public class Test {
/**
* @param args
*/
public static void main(String[] args) {
Base base = new Base();
Child child = new Child();
base.static_method();
child.static_method();
base = child;
base.static_method();
}
}
输出:
base static method
child static_method
base static method
可能是因为静态函数没有this指针,所以没法跟踪调用其的是到底是哪个实例变量,只能以引用变量来调用。
比如,引用变量base实际指向Child实例,但是调用静态函数,只能是调用Base类中的静态函数。