爲什麼器具必須始終之後寫在類的聲明延伸。例如:爲什麼「擴展」,在類聲明之前「工具」
public class Register extends ActionSupport implements ModelDriven
爲什麼不
public class Register implements ModelDriven extends ActionSupport
是編譯時錯誤
爲什麼器具必須始終之後寫在類的聲明延伸。例如:爲什麼「擴展」,在類聲明之前「工具」
public class Register extends ActionSupport implements ModelDriven
爲什麼不
public class Register implements ModelDriven extends ActionSupport
是編譯時錯誤
當Java編譯器將一個類轉換爲字節碼時,它必須首先查找父類。這是因爲類的底層實現是指向父類的字節碼 - 它包含相關的方法和字段。然後,它添加了指向子類功能代碼的指針 - 其中一些由「實現」關鍵字授權。
因爲父類必須是可編譯的,所以如果編譯器知道該類是什麼,則會更容易。此外,您只能擴展一個類,但實現任意數量的接口。如果extends關鍵字可以混合在任意數量的執行指令中,編譯時間就會增加。編譯器希望儘可能快地失敗以減少開發時間,所以這個選擇是合乎邏輯的。此外,它可以幫助你以同樣的理由清楚地瞭解班級。
+1最後一個理智的答案。謝謝。 :) – weltraumpirat
我盡我所能。畢竟,我們都在一起! –
@NathanielFord,我們真的嗎?我一直非常錯誤。 – jn1kk
可能使編譯器的工作更容易。這只是一個慣例。能夠重新排列這些東西沒有任何優勢。
這就像問爲什麼Java函數不是按照public int (int a, int b)add{ return a+b; }
這樣的預定義符號編寫的。
'C'的東西。隨着代碼的閱讀不僅僅是書面冗長,還有其他好處。 –
這不是一個約定。這是一個語法規則。您可以忽略的約定,規則由編譯器強制執行。 –
因爲這就是Java的原因。 –
...因爲這是詞法分析器強制執行的方式嗎? – Makoto
Sue Oracle for this =) – 4lex1v