Java私有建構函式不能阻止繼承

2021-09-08 17:17:05 字數 500 閱讀 2034

下面是乙個呼叫已經私有化的單列的函式的列子. 這裡用了靜態內部類,關鍵就是靜態內部類可以訪問外部類的私有建構函式。

這種算是變種繼承吧。前提是可以在原來的單列類裡新增**。

class single

public void runsinglemethod()

public static class evil extends single}}

public class singletest extends single.evil

public static void main(string args)

}output:

single

evil

normal

runsinglemethod

這個列子表明,要阻止繼承,還是得靠關鍵字 final.

我不知道 可不可以用位元組碼增加包 比如asm 包動態的給single類增加上面的那段靜態類**,但是有一點在這裡可以確認就是私有函式不能完全阻止繼承。

私有建構函式

通常我們都將建構函式的宣告置於public區段,假如我們將其放入private區段中會發生什麼樣的後果?我們知道,當我們在程式中宣告乙個物件時,編譯器呼叫建構函式 如果有的話 而這個呼叫將通常是外部的,也就是說它不屬於class物件本身的呼叫,假如建構函式是私有的,由於在class外部不允許訪問私有...

JavaScript學習筆記 建構函式的繼承

現在有乙個 動物 物件的建構函式 function animal 還有乙個 貓 物件的建構函式 function cat name,color 怎樣才能使 貓 繼承 動物 呢?function cat name,color var cat1 newcat 大毛 黃色 console.log cat1...

Java 建構函式

1.建構函式的特點 1 和類名具有相同的名稱 2 沒有返回型別,注意這裡的沒有返回型別和void是不一樣的。3 不能在建構函式中寫帶有return的語句 2.建構函式的過載 建構函式一樣可以進行過載,根據引數列表的引數個數或者引數型別進行區分。3.建構函式的一些細節 1 當我們在乙個類中沒有寫建構函...