靜態方法能夠重寫麼?

父類的普通方法能夠被繼承和重寫,很少做解釋,若是子類繼承父類,並且子類沒有重寫父類的方法,可是子類會有從父類繼承過來的方法。編程

靜態的方法能夠被繼承,可是不能重寫。若是父類中有一個靜態的方法,子類也有一個與其方法名,參數類型,參數個數都同樣的方法,而且也有static關鍵字修飾,那麼該子類的方法會把原來繼承過來的父類的方法隱藏,而不是重寫。通俗的講就是父類的方法和子類的方法是兩個沒有關係的方法,具體調用哪個方法是看是哪一個對象的引用;這種父子類方法也不在存在多態的性質。《Java編程思想》中這樣提到「只有普通的方法調用能夠是多態的」。成員變量和靜態方法不具備多態性。下面代碼爲例:code

public class StaticTest
{
    public static void main(String[] args)
    {
        M m = new N();
        m.output();
    }
}
 
class M
{
    public static void output()
    {
        System.out.println("M");
    }
}
 
class N extends M
{
    public static void output()
    {
        System.out.println("N");
    }
}

上面執行的結果是「M」,也就是M類型的引用調用的,若是修改main方法中的代碼:對象

N n = new N();繼承

n.output();class

那麼執行的結果是「N」,也就是N類型的引用調用的。變量

靜態的方法不能覆寫,也不能被重寫。總之,靜態的沒有重寫!!!引用

相關文章
相關標籤/搜索