static的方法到底能不能覆寫?
1.定義StaticExt類
package com.freelunch.test;
public class StaticExt {
public static void test()
{
System.out.println("father");
}
}
2.定義StaticExt 的子類StaticExtSon
package com.freelunch.test;
public class StaticExtSon extends StaticExt{
public static void test()
{
System.out.println("son");
}
public static void main(String[] args) {
StaticExtSon.test(); // "son"
new StaticExtSon().test(); // "son"
StaticExt f = new StaticExtSon();
f.test();// "father"
}
}
輸出:
son
son
father
3. 結論
靜态方法隻與定義時所在的類相關,在編譯期就已經綁定到某個類。可以繼承,但不能在子類中被同名方法覆寫。
由定義引用的類型決定調用的是父類還是子類的方法。