No estudo sobre herança, sabemos que, para aplicar este conceito, precisamos analisar com cuidado nosso projeto, de forma a identificar quais são as classes que devem estender de uma determinada classe. Dessa forma, podemos fazer com que diferentes classes possuam características e comportamentos em comum. Para validarmos nossas ideias, vamos aplicar os de herança em um cenário. Analisando as classes abaixo:
class Guerreiro extends Humano {
private int furia;
private void setFuriaA(int furia) {
this.furia = furia;
}
public int getFuria( ) {
return furia;
}
}
class Humano {
private int vida;
private int forca;
public int getVida( ) {
return vida;
}
public void setVida(int vida) {
this.vida = vida;
}
public int getForca() {
return forca;
}
public void setForca(int forca) {
this.forca = forca;
}
public int atacar( ){
return this.vida/2 * this.forca;
}
}
class Monge extends Guerreiro {
private int espirito;
void setEspirito(int espirito) {
this.espirito = espirito;
}
public int getEspirito( ) {
return espirito;
}
}
Após feita a análise, responda:
1. quais os métodos e os atributos são acessíveis em todos os objetos de qualquer uma das classes?
2. quais métodos e atributos são acessíveis apenas para objetos da classe Monge ?
Soluções para a tarefa
Resposta:
1)
- Métodos: getVida, setVida, getForca, setForca, atacar.
- Atributos: -
2)
- Métodos: getEspirito, setEspirito.
- Atributos: espirito.
Explicação:
Com o Diagrama de Classes podemos entender a resposta. Faz sentido que o que esteja no topo da hierarquia da herança seja visível a todas as suas subclasses, desde que a visibilidade do método ou atributo seja pública (ou protegida). Portanto, get/set vida e get/set forca são métodos visíveis em todos os níveis da hierarquia. Por outro lado, os atributos vida e forca não são visíveis às subclasses porque são privados (visíveis apenas a superclasse).
O Monge se encontra no fim da hierarquia. É visível somente ao Monge os seus métodos e atributos (get/set espirito e esperito). Se Monge tivesse uma subclasse, como MongeDoFogo, então a história mudaria e não haveria métodos visíveis apenas a ele, a não ser que a visibilidade dos métodos fosse trocada.
Resposta:
Resposta Correta:
Correta
Resposta:
1. Atributo vida e método setVida(), respectivamente.
2. Todos os métodos e atributos dela e pertencentes as heranças.
Explicação:
Quando utilizamos herança, a classe que herda, herda todos os métodos e atributos da classe base.