14.2. A relação subclasse/superclasse

Repare no cabeçalho da classe:

A palavra extends diz ao compilador que esta é uma subclasse da classe Jogo, ou seja:

 

O seguinte método main, numa qualquer classe cliente de JogoComObjetivo, acede não só ao construtor dessa classe e ao método pontuacaoObjetivo nela definidos, como também aos métodos juntarJogador, registarPontosJogada e estahEmJogo definidos na classe Jogo e "herdados" pela subclasse:

Se o executarmos, obtemos o output:

No Java, a relação de subclasse/superclasse é realizada através da palavra extends:

 

 

No Java,

Então porque é que os cabeçalhos das classes que temos construído ao longo deste curso não contêm as palavras extends Object? Porque não é necessário. Quando nada é dito, o compilador assume que a classe herda diretamente da classe Object.

 

No Java, a herança é simples:

Existem outras linguagens orientadas a objetos que suportam herança múltipla mas o Java não o permite.

 

A herança é transitiva:

Percebe-se melhor agora a frase "Toda e qualquer classe é subclasse da classe Object". A classe JogoComObjetivo estende diretamente a classe Jogo; esta, por sua vez, estende diretamente a classe Object, pois não declara no seu cabeçalho que estende alguma outra classe. Logo, a classe JogoComObjetivo é subclasse de Object, herdando, por isso, também, os vários métodos nesta definidos (toString, equals, hashCode, etc), como mais adiante estudaremos.

 

Representação em UML

Para representar a relação de extends entre duas classes, usa-se uma seta a com a cabeça branca.

 

 


 

Anterior: 14.1. Uma subclasse de Jogo

Seguinte: 14.3. Subtipos