Considere as seguintes classes Java, definidas em arquivos chamados, respectivamente, Funcionario.java, Gerente.java e TesteFuncionario.java:
|
public class Funcionario { protected String nome; protected double salario; public Funcionario(String nome, double salario) { this.nome = nome; this.salario = salario; } public void darAumento(double percentual) { salario = salario * (1.0 + percentual); } public double getSalario() { return salario; } } |
|
public class Gerente extends Funcionario { public Gerente(String nome, double salario) { super(nome, salario); } @Override public void darAumento(double percentual) { salario = salario * (1.05 + percentual); } } |
|
import java.util.ArrayList; import java.util.List; public class TesteFuncionario { private static List<Funcionario> equipe = new ArrayList<>(); public static void main(String[] args) { equipe.add(new Funcionario("Fulano", 3000)); equipe.add(new Gerente("Beltrana", 5000)); equipe.add(new Funcionario("Ciclano", 3000)); for (Funcionario func : equipe) { func.darAumento(0.1); System.out.print(func.getSalario() + " "); } System.out.println(); } } |
Considerando o código das 3 classes apresentadas acima, analise as afirmativas a seguir:
I. O código compila sem erros e sua execução imprime na tela 3 números de ponto flutuante na mesma linha.
II. A substituição do modificador de acesso protected por private na definição do atributo salario da classe Funcionario causa erro de compilação ao tentar se recompilar todo o código.
III. A anotação @Override na classe Gerente indica que o método darAumento está sendo sobrescrito. Removê-la causa erro de compilação ao tentar se recompilar todo o código.
IV. Os valores do atributo salario associados aos objetos com nome “Fulano” e “Ciclano” aumentam em 10% e o associado ao objeto com nome “Beltrana” aumenta em 15% em relação aos valores inicializados na construção dos respectivos objetos, se se desconsiderarem imprecisões em valores de ponto flutuante.
É CORRETO o que se afirma em