Всегда ли статичный метод в основном классе?

Я полный ноб в java, но, практикуя сегодня вечером, мне пришло в голову, что при разработке ООП каждый метод в основном классе должен быть статичным правильно? В этом коде не существует способа вызвать метод внутри класса, который не является статичным. Похоже, что, возможно, я не понимаю, почему вы объявляете статический класс или нет. Спасибо за вашу помощь!

public class JavaApplication2 {

private static CreateCar Vroom;
private static Limo Fuuu;

public static void main(String[] args) {
     Vroom = new CreateCar();
     Vroom.creator();
     getGas();
     addGas();
     getGas();
     Fuuu = new Limo();
     Fuuu.creator();
     Fuuu.wheels = 5;
     Fuuu.wheelie();
}
 public static int getGas(){
     Vroom.returnGas();
     return 0;
 }
 public static void addGas(){
     Vroom.fillerUp();
 } 
}

Ответы

Ответ 1

Вы можете вызывать нестатические методы, но вы можете делать это только через объект. То есть вам нужно вызвать метод на заданном объекте.

Ваш основной класс также может быть создан, поэтому не каждый метод в основном классе должен быть статичным. Например:

public class MainClass {
    int value;

    public void printValue() {
        System.out.println("" + value);
    }

    public static void main(String[] args){
        MainClass o = new MainClass();
        o.printValue();
    }
}

Ответ 2

Нет. Но метод main должен быть static.

Чтобы вызвать нестатический метод в классе, вам нужно создать ссылку на объект этого класса. Затем вы вызываете метод из ссылки.

public class JavaApplication2 {
    // non-static method
    public void go() {
        System.out.println("hello");
    }

    public static void main(String[] args) {
        // declare a reference
        JavaApplication2 app;
        // create an object
        app = new JavaApplication2();
        // call a method
        app.go();
    }
}

Ответ 3

Короткий ответ: да.

Причина в том, что вашей JVM необходимо вызвать класс "main" независимо от уже существующих экземпляров этого класса.

Незначительная семантическая выборка: "main" - член (статический член) класса; это не имя самого класса.

Полезный совет: каждый класс может иметь это СОБСТВЕННОЕ, РАЗНОЕ "main()" . Это может быть чрезвычайно полезно для отдельных тестов отдельных классов.

Это иногда бывает шоком для программистов на C/С++, где "main()" связано с ".exe", и вы можете иметь только один из них. В java у вас может быть много методов "main()" и вызывать то, что вы выберете во время выполнения.

Ответ 4

Er, у вас нет класса "static Main". У вас есть статический метод с именем main в вашем классе JavaApplication2.

В этом классе не требуется никаких других статических методов. Чтобы использовать класс, вы должны его создать:

public static void main(String[] args) 
{
    JavaApplication2 myApp = new JavaApplication2();
    myApp.someMethod(); 
    ...
}

main - это специально заданный статический метод, который действует как точка входа. Когда вы говорите Java "запускать" вашу программу из командной строки, например:

java JavaApplication2

JVM вызывает JavaApplication2.main(), передавая аргументы командной строки.

Ответ 5

короткий ответ: нет, каждый метод НЕ должен быть статичным.

на самом деле:

  • для небольших упражнений лучше не иметь другого класса для вашего основного метода.
  • у вас может быть несколько классов с основными методами (довольно распространенный во многих библиотеках, для тестирования или демонстрации использования класса)
  • При вызове java-программы, которая обычно является файлом jar, у вас есть выбор того, какой основной метод класса вы хотите вызвать
  • как новичок, старайтесь избегать статического метода, если вы не уверены, что в этом нуждаетесь. это связано с тем, что кто-то, кто плохо разбирается в объектно-ориентированном программировании, может легко злоупотреблять статическими методами, чтобы выполнять функционально-ориентированное программирование (не путать с функциональным программированием), используя статические методы.
  • Основной метод (обратите внимание, я не говорю "главный метод" ) должен быть статическим: public static void main (String [] argv) { /* ... */ }

Ответ 6

метод объявляется как статический, чтобы отнести его к имени класса... например,

Math.pow(x,y)  // x^y

В этом методе, называемом пользователем, не нужно беспокоиться о создании экземпляра... как Math имеет весь свой метод как статический, так что основная причина, почему используются статические методы...

статический метод может вызывать нестатические методы, хотя объект класса

ClassName cn =new ClassNam().methodName;

main() - это особый метод, его отправная точка выполнения программы, поэтому у вас никогда не может быть объекта без запуска программы, и, следовательно, его называют похожим (исполнение:: java ClassName), поэтому он должен быть статическим...

Ответ 7

Статические методы означают, что вы можете вызвать его непосредственно через

public class ClassName{
    //no-op
    public static void method(){//....}
}    
ClassName.method();

И в некоторых случаях ClassName можно опустить, например.

static import

main method

Но для вызова нестатического метода вы должны сначала инициировать его.