Solucionado (ver solução)
Solucionado
(ver solução)
5
respostas

Erro ao executar


package funcionario;

class Funcionario {

   protected String nome;
   protected double salario; 

  public void setSalario(double salario){ 
   this.salario = salario;   
   }

  public double getBonus() { 
      return this.salario * 0.2;
  }

  class Gerente extends Funcionario{

      public  double getBonus() { 
          return this.salario * 0.3;
      }
  }

  class TestaFuncionario {
    public static void main(String[] args) { //Illegal static declaration in inner class //Funcionario.TestaFuncionario modifier 'static' is only allowed in constant //variable declarations"**


        Funcionario joao = new Funcionario();
        joao.setSalario(1000.0);

        Gerente joaquim = new Gerente();  // "Non-static variable this cannot be                        /                                                                                     //referenced from a static context"
        joaquim.setSalario(2000.0);



        System.out.println(joao.getBonus());

    }
  }
}

Estou tentando executar esse código, aparentemente está igual o da aula, mas estou com erro na linha 25 e 31

Linha 25: "Illegal static declaration in inner class Funcionario.TestaFuncionario modifier 'static' is only allowed in constant variable declarations" Linha 31: "Non-static variable this cannot be referenced from a static context"

5 respostas

Olá Gustavo, aparentemente você criou a classe Funcionario e dentro dela criou (programou) as classes Gerente e TestaFuncionario, elas são classes e não podem estar dentro e você terá que separar o código dela

package funcionario;

class Funcionario {

   protected String nome;
   protected double salario; 

  public void setSalario(double salario){ 
   this.salario = salario;   
   }

  public double getBonus() { 
      return this.salario * 0.2;
  }
} 
 class Gerente extends Funcionario{

      public  double getBonus() { 
          return this.salario * 0.3;
      }
 }

  class TestaFuncionario {
    public static void main(String[] args) { //Illegal static declaration in inner class //Funcionario.TestaFuncionario modifier 'static' is only allowed in constant //variable declarations"**


        Funcionario joao = new Funcionario();
        joao.setSalario(1000.0);

        Gerente joaquim = new Gerente();  // "Non-static variable this cannot be                        /                                                                                     //referenced from a static context"
        joaquim.setSalario(2000.0);



        System.out.println(joao.getBonus());

    }
 }

Espero ter ajudado

Gustavo, coloca tu classe TestaFuncionario fora da classe Funcionario. Só subir uma } pra antes da linha class TestaFuncionario {

Obrigado! Esse problema eu consegui resolver agora, mas agora está dizendo que o método Main não foi encontrado.

"Erro: o método main não foi encontrado na classe funcionario.Funcionario; defina o método main como: public static void main(String[] args) ou uma classe de aplicativo JavaFX deve expandir javafx.application.Application"

Oi Gustavo, você deve compilar as 3 classes e chamar a TestaFuncionario o main está nessa classe

solução!

Gustavo, salva teu arquivo como TestaFuncionario.java e usa o javac

javac TestaFuncionario.java
java TestaFuncionario

Quer mergulhar em tecnologia e aprendizagem?

Receba a newsletter que o nosso CEO escreve pessoalmente, com insights do mercado de trabalho, ciência e desenvolvimento de software