«Если рабочий хочет хорошо выполнять свою работу, он должен сначала заточить свои инструменты» — Конфуций, «Аналитики Конфуция. Лу Лингун»
титульная страница > программирование > Почему я получаю ошибку «Невозможно создать статическую ссылку на нестатическое поле» в Java?

Почему я получаю ошибку «Невозможно создать статическую ссылку на нестатическое поле» в Java?

Опубликовано 7 ноября 2024 г.
Просматривать:470

Why am I getting the \

Как избежать ошибки «Невозможно создать статическую ссылку на нестатическое поле»

В программировании на Java ошибка «невозможно создать статическое поле» «ссылка на нестатическое поле» возникает ошибка при попытке доступа к нестатическому полю (также известному как переменная экземпляра) внутри статического метода.

В предоставленном коде ошибка возникает из-за того, что основной метод объявлен как статический, то есть он может ссылаться только на статические члены класса, включая статические методы и поля. Однако поля Balance и AnnualInterestRate не являются статическими, что означает, что они уникальны для каждого экземпляра класса Account.

Чтобы устранить эту ошибку, необходимо изменить код, чтобы он соответствовал соответствующему синтаксису Java:

  • > Удалить статические ссылки на нестатические поля:

    • Ссылки на баланс и AnnualInterestRate в основном методе должны быть удалены, потому что это переменные экземпляра, доступные через ссылку на объект (например, account.getBalance(), account.getAnnualInterestRate())
  • > Создание нестатических методов Методы экземпляра :

    • Методы вывода и депозита должны быть объявлены как нестатические, так как им необходим доступ к полю баланса через ссылку на объект. Это позволяет им изменять баланс определенных экземпляров Аккаунта.

Пересмотренный код для основного метода:

public static void main(String[] args) {
    Account account = new Account(1122, 20000, 4.5);

    account.withdraw(2500);
    account.deposit(3000);
    System.out.println("Balance is "   account.getBalance());
    System.out.println("Monthly interest is "   account.getAnnualInterestRate() / 12);
    System.out.println("The account was created "   account.getDateCreated());
}

Пересмотренный код для методов вывода и внесения депозита:

public void withdraw(double withdrawAmount) {
    balance -= withdrawAmount;
}

public void deposit(double depositAmount) {
    balance  = depositAmount;
}
Последний учебник Более>

Изучайте китайский

Отказ от ответственности: Все предоставленные ресурсы частично взяты из Интернета. В случае нарушения ваших авторских прав или других прав и интересов, пожалуйста, объясните подробные причины и предоставьте доказательства авторских прав или прав и интересов, а затем отправьте их по электронной почте: [email protected]. Мы сделаем это за вас как можно скорее.

Copyright© 2022 湘ICP备2022001581号-3