"Si un trabajador quiere hacer bien su trabajo, primero debe afilar sus herramientas." - Confucio, "Las Analectas de Confucio. Lu Linggong"
Página delantera > Programación > ¿Por qué aparece el error \"No se puede hacer una referencia estática a un campo no estático\" en Java?

¿Por qué aparece el error \"No se puede hacer una referencia estática a un campo no estático\" en Java?

Publicado el 2024-11-07
Navegar:571

Why am I getting the \

Cómo evitar el error "No se puede hacer una referencia estática a un campo no estático"

En la programación Java, el error "no se puede hacer un Se produce un error de referencia a un campo no estático al intentar acceder a un campo no estático (también conocido como variable de instancia) dentro de un método estático.

En el código proporcionado, el error surge porque el método principal se declara como estático, lo que significa que solo puede hacer referencia a miembros estáticos de la clase, incluidos métodos y campos estáticos. Sin embargo, los campos saldo y tasa de interés anual no son estáticos, lo que significa que son únicos para cada instancia de la clase Cuenta.

Para resolver este error, es necesario modificar el código para seguir la sintaxis Java adecuada:

  • > Eliminar referencias estáticas a campos no estáticos:

    • Las referencias al saldo y a la tasa de interés anual dentro del método principal deben eliminarse porque son variables de instancia a las que se accede a través de una referencia de objeto (por ejemplo, account.getBalance(), account.getAnnualInterestRate())
  • > Crear métodos no estáticos Métodos de instancia :

    • Los métodos de retiro y depósito deben declararse como no estáticos, ya que necesitan acceder al campo de saldo a través de una referencia de objeto. Esto les permite modificar el saldo de instancias de Cuenta específicas.

Código revisado para el 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());
}

Código revisado para métodos de retiro y depósito:

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

public void deposit(double depositAmount) {
    balance  = depositAmount;
}
Último tutorial Más>

Descargo de responsabilidad: Todos los recursos proporcionados provienen en parte de Internet. Si existe alguna infracción de sus derechos de autor u otros derechos e intereses, explique los motivos detallados y proporcione pruebas de los derechos de autor o derechos e intereses y luego envíelos al correo electrónico: [email protected]. Lo manejaremos por usted lo antes posible.

Copyright© 2022 湘ICP备2022001581号-3