覆蓋主要方法
回答
號main
是一個靜態方法,因此是不是多態。您可以隱藏它是在子類中定義另一個靜態main
方法,雖然。
不可以。您不能覆蓋靜態方法。
無論如何這不會有意義。由於您不需要該類的實例,因此不需要多態行爲。你只需要將全部從SomeParent.main()
更改爲SomeChild.main()
不,不可能重寫靜態方法,因爲它們不是實例級方法,而是類級方法。
不,你在這裏失去了重點。主要方法有一個目的,併爲此唯一目的進行邏輯聲明:
Java中的主要方法屬於一個類,但不屬於對象。對象創建在Java中的main()
是應用程序的起點,無法從特定於實例的方法啓動應用程序。這就是爲什麼靜態關鍵字與主要方法完美結合的原因。其實主要方法聲明的所有部分做出完美的感覺,當你覺得像「JVM」和畫面的主要方法做什麼(啓動應用程序):
public
,因爲這種方法必須由可訪問jvm(不是由你寫的)。這意味着這個方法可以在沒有對象的情況下被訪問(因爲它的表示從不改變),但是如果你再次像jvm一樣思考,這裏的邏輯很容易被理解; 「我沒有任何對象來創建(實例化)對象,所以我需要一個靜態方法來啓動應用程序,因爲簡單沒有任何合理的方法來獲取特定於實例的方法,因爲我沒有任何東西尚未創造物體「。void
此方法無法在邏輯上返回任何內容,因爲沒有任何內容尚未返回任何內容。這是應用程序的起點。 主要我是主要的方法,因爲沒有我你不會有一個應用程序。String[] args
給我發送的數據你可能會覺得我有用的啓動。
我們不能重寫靜態方法,因爲靜態方法是一個類方法,並且這個方法的範圍在同一個類本身內。所以如果你想強行重寫,那麼你必須在該類範圍之外定義它,這是沒有意義的。
這個我試過,不知道它的正確的方式來覆蓋的方法,但我能夠覆蓋這樣的主要方法,
class MainOverride {
public static void main(String[] args) {
MainOverridden mo = new MainOverridden();
String [] s = {"a","b"};
mo.main(s);
}
}
class MainOverridden extends MainOverride {
public static void main(String[] args) {
System.out.println("Main overridden");
}
}
您無法重寫靜態方法。你剛纔隱藏了主要方法MainOverride類。 – 2017-04-22 18:52:17
他甚至沒有隱藏它。仍然可以像以前一樣運行'MainOverride'作爲應用程序。如果你沒有告訴它運行該子類,它有一個子類的事實是無關緊要的。 – 2017-04-22 19:31:49
謝謝您的評論,我從中得到的結論是,我遵循重寫的方式並不實際有效,但請您可以慶祝更多 - 因爲我是新來的java :) – 2017-04-24 08:32:51
- 1. Laravel - 模型類,覆蓋主要方法
- 2. 關於覆蓋主要方法中的GUI的run()方法
- 3. 覆蓋主要的CSS
- 4. 需要覆蓋主題CSS
- 5. 覆蓋方法
- 6. 覆蓋方法
- 7. 覆蓋方法
- 8. 覆蓋方法
- 9. 覆蓋'+'方法
- 10. 覆蓋主幹歷史啓動方法
- 11. 是否可以使用LD_PRELOAD覆蓋主要方法?
- 12. Java方法覆蓋 - 「方法不會覆蓋超級方法...」
- 13. 需要覆蓋Servlet init方法
- 14. 需要覆蓋的webdriver的方法
- 15. 需要覆蓋的XMLWriter的方法
- 16. 覆蓋get方法
- 17. 覆蓋Uploadify方法
- 18. 覆蓋printf方法
- 19. C++方法覆蓋
- 20. VideoJS覆蓋方法
- 21. C++覆蓋方法
- 22. 覆蓋internalFrameClosing方法
- 23. 從覆蓋方法
- 24. 覆蓋/新方法
- 25. 覆蓋shouldAutorotateToInterfaceOrientation方法
- 26. Java。覆蓋方法
- 27. OnBackKeyPress覆蓋方法
- 28. eclipse覆蓋方法
- 29. Android方法覆蓋
- 30. Backbone.Marionette覆蓋方法
你能給的,當你想做到這一點的例子,爲什麼? – 2012-01-31 17:38:03