class a1 {
public static void f() {
system.out.println("a1.f()");
}
}
class a2 extends a1 {
system.out.println("a2.f()");
class t {
public static void main(string[] args) {
a1 a1 = new a1();
a1 a2 = new a2();
// 靜态方法不具有多态效果,它是根據引用聲明類型來調用
a1.f();// a1.f()
a2.f();// a1.f()
對靜态方法的調用不存在任何動态的分派機制。當一個程式調用了一個靜态方法,要被調用的方法都是在編譯時就被標明的,即調用哪個方法是根據該引用被聲明的類型決定的。上面程式中a1與a2引用的類型都是a1類型,是以調用的是a1中的f()方法。
原帖位址:http://jiangzhengjun.iteye.com/blog/652748