Já sabemos que uma classe define implicitamente um tipo. O tipo tem o mesmo nome da classe.
Se a classe
B
estende a classeA
, então o tipoB
é um subtipo deA
;Esta relação é transitiva, ou seja:
- Se
B
é subtipo deA
, eC
é subtipo deB
, entãoC
é subtipo deA
;A relação de subtipo define uma hierarquia de tipos que tem como raiz o tipo
Object
.
Repare que, pelo facto da classe Jogo
implementar o interface Ganhavel
, também a classe JogoComObjetivo
o implementa, ou seja, JogoComObjetivo
é subtipo de Ganhavel
.
Relembremos o exemplo da secção 13.3. Se acrescentarmos uma classe B1
que estende B
, implementando um novo método m5
, a representação em UML das classes e do interface é ilustrada na figura:
Já vimos na secção 13.3, que a forma como os tipos se organizam é um ingrediente fundamental na análise estática de tipos, executada pelo compilador
Anterior: 14.2. A relação subclasse/superclasse
Seguinte: 14.4. Herança e construtores