O modificador “abstract” torna uma classe ou um método abstrato. Não é possível criar objetos de classes abstratas. Uma classe abstrata apenas serve de superclasse para outras classes. Todo método abstrato deve ser sobrescrito por uma subclasse, a menos que a subclasse também seja abstrata. Neste caso, outra subclasse que for concreta (não abstrata) é quem deverá sobrescrever os métodos abstratos.
Observe o código abaixo.
Poligono.java:
1 public abstract class Poligono {
2 protected int quantidadeDeLados;
3
4 public Poligono(int quantidadeDeLados) {
5 if (quantidadeDeLados < 3) {
6 System.out.println("Quantidade de lados inválido");
7 }
8 this.quantidadeDeLados = quantidadeDeLados;
9 }
10
11 public int getQuantidadeDeLados() {
12 return quantidadeDeLados;
13 }
14
15 public abstract void imprimirQuantidadeLados() {
16 System. out.println("Quantidade de lados: " + quantidadeDeLados);
17 }
18
19 public abstract double calcularArea();
20 }
Retangulo.java:
1 public class Retangulo extends Poligono {
2 private int base;
3 private int altura;
4
5 public Retangulo(int base, int altura) {
6 super(4);
7 this.base = base;
8 this.altura = altura;
9 }
10 public double calcularArea() {
11 return base * altura;
12 }
13 }
Triangulo.java
1 public class Triangulo extends Poligono {
2 private int base;
3 private int altura;
4
5 public Triangulo(int base, int altura) {
6 super(3);
7 this.base = base;
8 this.altura = altura;
9 }
10 public double calcularArea() {
11 return base * altura / 2;
12 }
13 }
Considerando o texto e o código acima, avalie as afirmações abaixo.
I – As classes Triangulo e Retangulo apresentam erro, pois elas não sobrescrevem o método "imprimirQuantidadeDeLados".
II – O método "imprimirQuantidadeLados" da classe Poligono não poderia ter um corpo, pois ele é abstrato.
III – O atributo "quantidadeDeLados" pode ser acessado pelas classes Triângulo e Retângulo, pois o modificador “protected” permite o acesso pelas subclasses.
IV – O atributo "quantidadeDeLados" poderia ter o modificador "static", pois é um atributo que é inicializado no construtor e seu valor não é alterado depois.
É correto o que se afirma em:
A) I e II, apenas.
B) II e III, apenas.
C) III e IV, apenas.
D) I, II e III, apenas.
E) II, III e IV, apenas.
Soluções para a tarefa
Respondido por
6
Resposta:
Penso ser a alternativa B) II e III, apenas.
Explicação:
No meu entender:
I – As classes Triangulo e Retangulo apresentam erro, pois elas não sobrescrevem o método "imprimirQuantidadeDeLados". - FALSA, pois não há obrigação dessas classes em sobrescrever o método citado;
IV – O atributo "quantidadeDeLados" poderia ter o modificador "static", pois é um atributo que é inicializado no construtor e seu valor não é alterado depois. - FALSA, uma vez que o atributo "quantidadeDeLados" é, sim, alterado posteriormente (triângulo = 3 lados, retângulo = 4 lados, etc).
HectorPatrick:
Alternativa correta é a I, II e III apenas
Perguntas interessantes
Contabilidade,
6 meses atrás
Matemática,
6 meses atrás
Ed. Física,
6 meses atrás
Inglês,
9 meses atrás
Matemática,
9 meses atrás
Geografia,
1 ano atrás
Geografia,
1 ano atrás