вызов другого метода из метода main в java [duplicate]
этот вопрос уже есть ответ здесь:
Я
class foo{
public static void main(String[] args){
do();
}
public void do(){}
}
но тогда, когда я звоню do()
С main
С помощью команды java foo
в командной строке Java жалуется, что вы не можете вызвать метод из статическая функция.
Итак, мой вопрос: Как вы вызываете методы из основного метода, и если это невозможно, каковы некоторые альтернативные стратегии для вызова методов после запуска программы из командной строки с помощью команды java.
6 ответов
вы можете вызвать только метод экземпляра, как do()
(кстати, это незаконное имя метода) против экземпляра класса:
public static void main(String[] args){
new Foo().doSomething();
}
public void doSomething(){}
другое doSomething()
статические, а также, если это работает для вашего дизайна.
Проверьте статический перед основным методом, это объявляет метод как метод класса, что означает, что ему не нужно вызывать экземпляр. Так как вы собираетесь вызвать не статичный метод Java жалуется, потому что вы пытаетесь вызвать так называемый "метод экземпляра", который, конечно, должен первый экземпляр ;)
Если вы хотите лучше понять классы и экземпляры, создайте новый класс с методами экземпляра и класса, создайте объект в главном цикле и вызовите методы!
class Foo{
public static void main(String[] args){
Bar myInstance = new Bar();
myInstance.do(); // works!
Bar.do(); // doesn't work!
Bar.doSomethingStatic(); // works!
}
}
class Bar{
public do() {
// do something
}
public static doSomethingStatic(){
}
}
также помните, что классы в Java должны начинаться с заглавной буквы.
это фундаментальное понимание в Java, но может быть немного сложно для новых программистов. Сделайте небольшое исследование разницы между статическим и методом экземпляра. Основное различие заключается в том, что метод экземпляра do() доступен только экземпляру класса foo.
необходимо создать экземпляр класса, создав объект, который используется для вызова метода экземпляра.
Я включил вам пример с несколькими комментариями и примером.
public class SomeName {
//this is a static method and cannot call an instance method without a object
public static void main(String[] args){
// can't do this from this static method, no object reference
// someMethod();
//create instance of object
SomeName thisObj = new SomeName();
//call instance method using object
thisObj.someMethod();
}
//instance method
public void someMethod(){
System.out.print("some message...");
}
}// end class SomeName
вы можете сделать это несколькими способами. Вот два. Ура!
package learningjava;
public class helloworld {
public static void main(String[] args) {
new helloworld().go();
// OR
helloworld.get();
}
public void go(){
System.out.println("Hello World");
}
public static void get(){
System.out.println("Hello World, Again");
}
}
Если вы хотите использовать do()
в вашем основном методе есть 2 варианта, потому что один статический, но другой (do ()) не
- создать новый экземпляр и вызвать do () как
new Foo().do();
- сделать
static do()
метод
посмотри sun учебник
первый java не позволит вам иметь do()
метод. Вместо этого вы можете сделать это doOperation()
.
во-вторых, вы не можете напрямую вызывать нестатические методы из статической функции. Main
является статической функцией. Сначала необходимо создать экземпляр класса, а затем вызвать метод с помощью этого экземпляра.
В-третьих, вы можете вызвать статический метод напрямую из статических методов.