Java的構造方法

2021-08-27 20:21:13 字數 755 閱讀 2478

看下面的例子,覺得應該輸出什麼?

public class a 

void set()

static class b extends a

void set()

void get() }

public static void main(string args)

}

當時,看到這個題目,犯了兩個錯誤:

1. 不知道new b() 的時候,如果沒有指定父類的構造方法,就會預設的呼叫a(), 也就是super();

new b的時候,必須b這個類載入到記憶體,可是b是繼承自a的,也可以理解為依賴

所以,當然首先得把a載入到記憶體!

2. 知道會預設的呼叫父類的構造方法後,不確定呼叫的到底是哪個set()方法!

其實 ,上面**列印的應該是兩個b,不會呼叫a中的set

通過在a中的構造方法列印在呼叫set方法的物件時,注意不是a , 而是a$b

所以,呼叫的是b中的set方法!

可是,為什麼會這樣了?

是不是可以這樣理解,把b() 中的super()呼叫看成是"this.super()(實際上子類是不能訪問父類的構造方法的,除了使用super)"

super()和它裡面的set()都是同乙個級別的,也就是都是通過同乙個this訪問的

這就好比呼叫b自己類中實現了的set() , 然後set()中又有乙個新的方法 get() , 這個get()不就等同於super()中的set()嗎?

Java的構造方法

今天,嘗試了一下使用jb2007中整合的pmd外掛程式。這個外掛程式按官方的說明是可以在編碼階段即可對 質量做檢查的工具,與findbugs checkstyle作用相似。我有乙個constant類,裡面全部是public static final型別的類成員,作用是儲存工程的全域性常量。用了pmd...

java的構造方法

構造方法的特點 與類同名,沒有返回值 在我理解中建構函式就相當於malloc函式,而類名定義的引用變數,就是乙個指標。建構函式就是申請一塊空間,將指標賦值給引用變數。這就是例項化,類似於c語言的指標賦值。而建構函式傳引數賦值的功能。建構函式的作用 1 例項化時呼叫 2 初始化物件 如果沒有定義建構函...

java的構造方法

引用 constructor 構造方法 new物件時,都是用構造方法進行例項化的 例如 animal animal new animal 1 構造方法的方法名必須與類名一樣。2 構造方法沒有返回值,不能用void,在方法名前面不能宣告方法型別。3 可以進行過載 單個構造方法 public class...