我是一名本科大學生,試圖理解Java中的繼承。 docs.oracle站點說,類的所有成員都是繼承的,除了構造函數。這是有道理的。問題是我做了一個實驗,並沒有奏效。這裏是:Java,繼承和實例方法。爲什麼我的方法不會繼承?
public class One{
public void outPrint(){
System.out.println("Hello World!");
}//end outPrint
}//end One.java
public class Two extends One{
//empty
}//end Two.java
public class Three extends Two{
public static void main(String[]args){
outPrint();
}//end main
}//end Three.java
當我運行三我得到:非靜態方法outPrint()不能從靜態上下文引用。這當然是因爲編譯器將outPrint()看作實例成員。如果我將關鍵字「static」添加到outPrint()方法頭部,那麼整個事情都可以正常工作。
這是我混亂的地方。它似乎不僅僅是不可繼承的構造函數,而且也是它的所有實例成員。任何人都可以解釋這對我更好一點嗎?有沒有涉及到使用「靜態」的工作?我嘗試了一些「超級」的試驗無濟於事。提前致謝!
的簡單建議。也許你的老師建議(或強迫)你在每個括號的末尾加上註釋,但這對程序員來說是一種噪音。評論是針對可能不明確的事情,如解釋算法。如果您的代碼縮進(製表符,換行符等),那麼這些評論實際上是不必要的。 –
這是推薦的,但它也幫助我閱讀代碼時,我必須調試。在這個例子中,它肯定顯得多餘,但是當我有幾百行代碼或更多的代碼時,我發現我可以更好地區分代碼塊。特別是當涉及到控制結構時。當我進入職業世界時,我相信我必須修改我的習慣!感謝您的建議! – gates3353