"Se um trabalhador quiser fazer bem o seu trabalho, ele deve primeiro afiar suas ferramentas." - Confúcio, "Os Analectos de Confúcio. Lu Linggong"
Primeira página > Programação > Por que estou recebendo o erro "Não é possível fazer uma referência estática para um campo não estático" em Java?

Por que estou recebendo o erro "Não é possível fazer uma referência estática para um campo não estático" em Java?

Publicado em 2024-11-07
Navegar:480

Why am I getting the \

Evitando o erro "Não é possível fazer uma referência estática a um campo não estático"

Na programação Java, o erro "não é possível fazer uma referência estática O erro "referência a um campo não estático" ocorre ao tentar acessar um campo não estático (também conhecido como variável de instância) dentro de um método estático.

No código fornecido, o erro surge porque o método principal é declarado como estático, o que significa que só pode se referir a membros estáticos da classe, incluindo métodos e campos estáticos. No entanto, os campos balance e AnnualInterestRate não são estáticos, o que significa que são exclusivos para cada instância da classe Account.

Para resolver esse erro, é necessário modificar o código para seguir a sintaxe Java apropriada:

  • > Remover referências estáticas para campos não estáticos:

    • As referências a balance e AnnualInterestRate dentro do método principal devem ser removidas porque elas são variáveis ​​​​de instância acessadas por meio de uma referência de objeto (por exemplo, account.getBalance(), account.getAnnualInterestRate())
  • > Faça métodos não estáticos Métodos de instância :

    • Os métodos de saque e depósito devem ser declarados como não estáticos, pois precisam acessar o campo de saldo através de uma referência de objeto. Isso permite que eles modifiquem o saldo de instâncias de conta específicas.

Código revisado para o método principal:

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());
}
Tutorial mais recente Mais>

Isenção de responsabilidade: Todos os recursos fornecidos são parcialmente provenientes da Internet. Se houver qualquer violação de seus direitos autorais ou outros direitos e interesses, explique os motivos detalhados e forneça prova de direitos autorais ou direitos e interesses e envie-a para o e-mail: [email protected]. Nós cuidaremos disso para você o mais rápido possível.

Copyright© 2022 湘ICP备2022001581号-3