Java - не удается найти символьную ошибку с другими классами - PullRequest
0 голосов
/ 09 ноября 2018

Прежде всего я хочу прояснить: Я не спрашиваю, что означает ошибка cannot find symbol , я просто спрашиваю, что вызывает эта ошибка в этом контексте.

Я недавно углубился в классы на Java. Ниже мой первый [не main] класс:

class Test {
    public void test() {
        System.out.println("Hello, world!");
    }
}
class Main {
    public static void main(String[] args) {
        test();
    }
}

Но я получаю следующую ошибку:

exit status 1
Main.java:8: error: cannot find symbol
                test();
                ^
  symbol:   method test()
  location: class Main
1 error

Может кто-нибудь объяснить, почему это происходит?

System.out.println("Thanks!");

Ответы [ 2 ]

0 голосов
/ 09 ноября 2018

Вы не можете использовать метод test() в Главном классе. Потому что метод test() определен в другом классе, в классе Test. Чтобы достичь метода test() в другом классе (Main class), вам нужно создать объект, и вы можете получить доступ к методу test() через этот объект. test() метод - это метод экземпляра, который принадлежит к классу Test.

class Main {
  public static void main(String[] args) {
      Test test1 = new Test();
      test1.test();
  }
}
0 голосов
/ 09 ноября 2018

Метод test () не объявлен как статический.

Вы вызываете нестатический метод test () в статическом методе main ().Если вы не хотите менять класс Test, вы должны изменить main () следующим образом:

public static void main(String[] args) {
    Test t = new Test();
    t.test();
}

Если вы не хотите менять main () слишком сильно.Затем вы должны изменить метод test () следующим образом: public static void test () {}

и метод main () внутри:

Test.test()
...