// override a private method
public
class
privateoverride
public
static
void
main
(string[
] args)
}class
derived
extends
privateoverride
// 私有方法也不能被過載,此處相當於建立了乙個新方法
// 但與derived中的void f()方法是過載關係
public
intf
(int i)
}
【結果】
我們希望輸出的是public f()
,但是由於private方法被自動認為是final方法,而且是匯出類遮蔽的。因此,在這種情況下,derived類中的f()方法就是乙個全新的方法;既然基類中的方法在子類中derived中不可見,因此甚至也不能被過載。
結論:只有非private方法才可以被覆蓋。在匯出類中,對於基類中的private方法,最好採用不同的名字。
從基類中獲取所有子類名
有的時候,我們需要獲取某個基類中的所有子類,從而進行統一管理。這裡有乙個簡單易行的實現 class program static bool issubclassof type type,type basetype b b.basetype return false public class base...
java繼承中關於覆蓋方法和子類構造器
覆蓋方法 1.在父類中一些方法並不適合子類所以用新的方法來覆蓋.本文用people類和student類進行解釋 定義父類people public class people public void setname string name public string get public void s...
Java中父類和子類載入順序
最近在總結一些和jvm相關的知識,現在總結一下關於父類和子類載入順序的問題。簡而言之就是先靜態後非靜態,先父類後子類,具體順序如下 父類靜態變數 父類靜態 塊 若有多個按 先後順序執行 子類靜態變數 子類靜態 塊 若有多個按 先後順序執行 父類非靜態變數 父類非靜態 塊 若有多個按 先後順序執行 父...