天天看點

靜态方法繼承和覆寫

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. 結論

靜态方法隻與定義時所在的類相關,在編譯期就已經綁定到某個類。可以繼承,但不能在子類中被同名方法覆寫。

由定義引用的類型決定調用的是父類還是子類的方法。