我是Java的初學者,我有一個關於主類和主要方法的基本問題。我嘗試在main方法下創建方法,例如添加。像「非靜態方法」拋出錯誤。什麼是理由?謝謝...爲什麼我不能在主類中的main方法之外創建另一個方法?
回答
我猜你用這樣的代碼。
public class TestClass {
public static void main(String[] args) {
doSth();
}
public void doSth() {
}
您不能從主類調用非靜態方法。 如果你想從你的主類調用非靜態方法,例如你的類是這樣的:
TestClass test = new TestClass();
test.doSth();
並調用該方法。
你不能從一個靜態方法中調用一個非靜態方法而沒有實例化這個類。如果你想在不創建主類的新實例(一個新對象)的情況下調用另一個方法,那麼你也必須爲另一個方法使用static關鍵字。
package maintestjava;
public class Test {
// static main method - this is the entry point
public static void main(String[] args)
{
System.out.println(Test.addition(10, 10));
}
// static method - can be called without instantiation
public static int addition(int i, int j)
{
return i + j;
}
}
如果你想調用非靜態方法,你必須instatiate類,這種方式創建一個新的實例,這個類的一個對象:
package maintestjava;
public class Test {
// static main method - this is the entry point
public static void main(String[] args)
{
Test instance = new Test();
System.out.println(instance.addition(10, 10));
}
// public method - can be called with instantiation on a created object
public int addition(int i, int j)
{
return i + j;
}
}
主要方法是一個靜態方法,所以它不存在於一個對象內部。
要調用非靜態方法(在其定義前沒有「static」關鍵字的方法),您需要使用new
創建該類的對象。
您可以使其他方法靜態,這將解決眼前的問題。但它可能會或可能不是很好的面向對象的設計來做到這一點。這取決於你想要做什麼。
您的方法沒有使用關鍵字'static'來定義我的想法。 您不能在靜態上下文(如主方法)中調用非靜態方法。
靜態方法意味着你不需要調用該方法上的一個實例(對象)。非靜態(實例)方法要求您在實例上調用它。所以想想吧:如果我有一個方法changeThisItemToTheColorBlue()我試圖從主方法運行它,它會改變什麼樣的實例?它不知道。您可以在實例上運行實例方法,如someItem。 changeThisItemToTheColorBlue()。在http://en.wikipedia.org/wiki/Method_(computer_programming)#Static_methods
的唯一方法
更多信息調用從一個靜態方法的非靜態方法是讓含有非靜態方法的類的一個實例。根據定義,非靜態方法是一個被稱爲ON的某個類的實例,而靜態方法屬於該類本身。
是當你嘗試調用String類的非靜態方法startsWith沒有一個實例,如:
String.startsWith("Hello");
你需要的是有一個實例,然後調用非靜態方法:
String greeting = new String("Hello World");
greeting.startsWith("Hello"); // returns true
所以你需要創建和實例來調用它。
而且約爲靜態方法更清晰,你可以參考
- 1. 爲什麼我不能在我的主要方法中創建一個方法?
- 2. 爲什麼我們不能在另一個類方法之外使用類方法?
- 3. 爲什麼我不能調用另一個類的方法
- 4. 爲什麼我不能在任何方法外創建對象
- 5. 我在另一個類中創建了一個方法,但是我無法在主類中使用onClick方法
- 6. 爲什麼我不能在類之外的方法中使用數組?
- 7. 爲什麼我們不能在Java中的main方法中實現一個方法?
- 8. 爲什麼我不能從同一個類中的另一個方法調用此方法?
- 9. 爲什麼項目的一個類中的方法不能識別另一個類的方法?
- 10. 爲什麼不能在c#中的另一個類中創建的對象上使用類方法?
- 11. 爲什麼我的Class方法調用在一個方法中工作,而不是另一個方法?
- 12. 爲什麼我不能在方法體之外聲明一個通用的匿名方法?
- 13. 爲什麼模塊的'自我'方法不能成爲類的單一方法?
- 14. 爲什麼不使用主要方法之後的方法?
- 15. 爲什麼我不能初始化另一個類的方法藍牙
- 16. 爲什麼我無法爲靜態類創建擴展方法?
- 17. 爲什麼我不能在另一個UIViewController中重寫UIViewController的擴展方法?
- 18. 傳遞的主要方法創建另一個類的ArrayList
- 19. 如何在main方法中從另一個類創建List對象?
- 20. 爲什麼這種方法不能在另一種方法中工作?
- 21. 爲什麼onClickListener不能在onCreate方法之外工作?
- 22. 爲什麼我不能從另一個對象內調用另一種方法
- 23. 爲什麼我的update()方法創建一個新的實例?
- 24. 什麼是在PHP中創建另一個類的對象的正確方法?
- 25. 在另一個方法中創建的方法中停止對象的正確方法是什麼?
- 26. 呼叫從一個類的主要方法,另一個類的主要方法
- 27. 使用java中的main方法爲類創建對象時發生了什麼
- 28. 爲什麼我不能從我的Python類中調用方法?
- 29. 爲什麼你可以通過創建一個對象來調用main方法中的非靜態方法? Java
- 30. 爲什麼我不能在類/靜態方法中使用private,internal,fileprivate方法?
請發佈您的代碼,以便我們可以看看。 –