Java之路 在子類中覆蓋基類私有方法

2021-09-05 01:16:27 字數 708 閱讀 9570

// 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相關的知識,現在總結一下關於父類和子類載入順序的問題。簡而言之就是先靜態後非靜態,先父類後子類,具體順序如下 父類靜態變數 父類靜態 塊 若有多個按 先後順序執行 子類靜態變數 子類靜態 塊 若有多個按 先後順序執行 父類非靜態變數 父類非靜態 塊 若有多個按 先後順序執行 父...