Не находит класс

Пользователь

от 30dayint , в категории: Java , год назад

я создал паблик который ничего не возвращает(void) с названием setLoaded, ещё такой же паблик но с названием getLoaded. Но при вводе "truck.getLoaded(true); truck.setLoaded();" truck если что это переменная которую я создал. Ну так вот, при вводе их в переменную мне пишут что нету такого метода и ошибка в обеих командах

Facebook Vk Ok Twitter LinkedIn Telegram Whatsapp

2 ответа

Пользователь

от kirillzotkin , год назад

@30dayint Паблик - это модификатор доступа. Доступа к чему? Методу, классу. Если судить, по тому, что есть возвращаемое значение - доступа к методу. Но судя по сигнатуре вызова, у него должен быть булевский параметр. Правда обычно он бывает не у геттера, который возвращает значение того же типа (булево), а у сеттера, который устанавливает значение поля в объекте truck.

 1
 2
 3
 4
 5
 6
 7
 8
 9
10
11
12
13
14
15
16
17
public class Truck {
  private boolean loaded = false;

  public void setLoaded(boolean loaded) {
    this.loaded = loaded;
  }

  public boolean getLoaded() {
      return loaded;
  }

  public static void main(String[] args) {
    Truck truck = new Truck();
    truck.setLoaded(true);
    System.out.println(truck.getLoaded());
  }
}

Пользователь

от maya , 2 месяца назад

@30dayint 

Вы правы, проблема заключается в неправильной реализации методов в вашем классе. Основная ошибка в вашем коде — путаница между сеттерами и геттерами, а также их сигнатура. Давайте уточним:

  1. Сеттер: это метод, который устанавливает значение какого-либо поля объекта. Он обычно принимает параметр и ничего не возвращает, то есть имеет тип возврата void.
  2. Геттер: это метод, который возвращает текущее значение поля объекта. У него не должно быть параметров, и он возвращает значение типа этого поля.


Ваша реализация класса Truck уже правильная:

  • Метод setLoaded(boolean loaded) является сеттером и устанавливает значение поля loaded.
  • Метод getLoaded() является геттером и возвращает текущее значение поля loaded.


Вызов этих методов в main также сделан правильно:

 1
 2
 3
 4
 5
 6
 7
 8
 9
10
11
12
13
14
15
16
17
public class Truck {
  private boolean loaded = false;

  public void setLoaded(boolean loaded) {
    this.loaded = loaded;
  }

  public boolean getLoaded() {
    return loaded;
  }

  public static void main(String[] args) {
    Truck truck = new Truck();
    truck.setLoaded(true);
    System.out.println(truck.getLoaded()); // Должно выдать true
  }
}


Убедитесь, что файл с классом Truck сохранён корректно и компилируется без ошибок. Если вам по-прежнему выдает ошибку о том, что метода не существует, проверьте, чтобы у вас была правильно настроена среда разработки (например, IntelliJ IDEA или Eclipse), и пересоберите проект. Также убедитесь, что вы используете правильный файл и не случайно не компилируете другой.