A herança é o recurso que possibilita que uma classe adquira as características de outra classe. A herança se caracteriza pela utilização da palavra-chave [color=darkred]extends[/color].
O exemplo mostra que objetos da classe herdeira podem ser passados para um metodo que espera objetos da classe GameShape, pois os filhos passam no teste É-UM ( PlayerPiece é um GameShape )
No entanto é um exemplo ruim pq nao mostra subscrição.
doShapes(player);
doShapes(tile);
public static void doShapes(GameShape shape){
shape.displayShape();
}
Por que na chamada de doShapes(player) e doShapes(tile) eles não imprimem “moving game piece” e “getting adjacent tiles” ao invés disso imprime “display shape” 2 vezes?
Porque ele chama o método displayShape que existe apenas na classe pai, se esse método fosse subscrito nas subclasses então seria chamado os método displayShape da classe filha.
[quote=Vecchiato]Porque ele chama o método displayShape que existe apenas na classe pai, se esse método fosse subscrito nas subclasses então seria chamado os método displayShape da classe filha.
Entendeu?
Abraços.[/quote]
No caso ela procura o método na sub-classe ai não encontra e chama o da super-classe. É isso?
[quote=anderson.bonavides][quote=Vecchiato]Porque ele chama o método displayShape que existe apenas na classe pai, se esse método fosse subscrito nas subclasses então seria chamado os método displayShape da classe filha.
Entendeu?
Abraços.[/quote]
Até compreendi mas me vem a seguinte questão: As sub-classes recebem o método herdado então pelo que entendi ela pode chamar o metodo herdado não?[/quote]
pode.
mas se ela nao ‘subscrever’ o metodo, sera executada a implementação que esta na classe Pai
[quote=fabiocsi][quote=anderson.bonavides][quote=Vecchiato]Porque ele chama o método displayShape que existe apenas na classe pai, se esse método fosse subscrito nas subclasses então seria chamado os método displayShape da classe filha.
Entendeu?
Abraços.[/quote]
Até compreendi mas me vem a seguinte questão: As sub-classes recebem o método herdado então pelo que entendi ela pode chamar o metodo herdado não?[/quote]
pode.
mas se ela nao ‘subscrever’ o metodo, sera executada a implementação que esta na classe Pai[/quote]
Perfeito!
Agora compreendi perfeitamente. Muito obrigado por ter exclarecido e a todos que postaram.