靜態方法和非靜態方法在父類和子類之間的區別

2021-07-11 21:03:01 字數 619 閱讀 6229

下面通過例子來說明:

父類parent有乙個靜態方法和乙個非靜態方法。

public class parent 

public static void staticmethod()

}

子類child繼承父類的靜態方法和非靜態方法

public class child extends parent

public static void staticmethod()

}

測試類test

public class test 

}

結果截圖:

結果分析:

區別就在與p2的靜態方法和非靜態方法的呼叫。p2是child型別的乙個引用,例項化乙個child類並轉換成乙個父類parent的物件,而p2呼叫父類靜態方法的時候,子類的靜態方法並沒有覆蓋父類的靜態方法,因此呼叫的是父類的靜態方法。而p2呼叫父類的非靜態方法時,子類把父類同名的非靜態方法覆蓋掉了,因此呼叫的是子類的非靜態方法。

靜態方法和非靜態方法

首先,兩者本質上的區別是 靜態方法是在類中使用staitc修飾的方法,在類定義的時候已經被裝載和分配。而非靜態方法是不加static關鍵字的方法,在類定義時沒有占用記憶體,只有在類被例項化成物件時,物件呼叫該方法才被分配記憶體。其次,靜態方法中只能呼叫靜態成員或者方法,不能呼叫非靜態方法或者非靜態成...

靜態方法和非靜態方法

靜態方法和非靜態方法 其次,靜態方法中只能呼叫靜態成員或者方法,不能呼叫非靜態方法或者非靜態成員,而非靜態方法既可以呼叫靜態成員或者方法又可以呼叫其他的非靜態成員或者方法。例子1 靜態方法的main方法訪問類中的非靜態成員方法。class test public static void main s...

靜態和非靜態方法 呼叫靜態和非靜態方法 原創

在學習php物件導向的時候,遇到了一些問題 class test1 在test1類中,定義了乙個test方法。一般呢,想要呼叫test方法的話,是通過例項化乙個物件來呼叫test方法的。比如 aaa.php php 正常的方式訪問普通方法test class test1 new new test1 ...