[Prévia] [Próxima] [Prévia por assunto] [Próxima por assunto]
[Índice cronológico] [Índice de assunto]

Re: Exceções, interfaces e Java



On Wed, Apr 17 2002 at 01:24:32pm -0300, Paulo Eduardo Azevedo Silveira wrote:
> > Voce pode passar um objeto da classe "sub" para a funcao printsuper? Eu
> > acho que nao, e o gcc concorda comigo :-). Portanto, elas nao sao do mesmo
> > tipo: a heranca nesse caso e' so' de implementacao.
> 
> como assim????

Acho que no meu esforco de escrever emails curtos (como se eles fossem de
fato curtos!) nao estou me fazendo entender. Veja a declaracao:

> > class sub: private super {

Em geral, esse nao e' o tipo de derivacao que se usa; em geral, o que se
usa e' "public" ao inves de "private". Mas a derivacao private existe
tambem, e ai' a subclasse nao e' um subtipo. Nesse caso a heranca serve
apenas para "herdar" a implementacao.

Ja' a heranca de interface "pura" (interfaces de java ou classes virtuais
puras de C++) e' uma aberracao criada por C++ e Java. Essa aberracao nasce
do fato que, nessas linguagens, tipos e classes sao sinonimos, muito
embora conceitualmente nao sejam.

O que estou tentando dizer e': em termos de POO, um tipo e' um conceito;
uma classe e' uma implementacao desse conceito. Duas classes que
implementem esse conceito sao do mesmo tipo, independentemente da
hierarquia de classes; de forma analoga, duas classes dentro da mesma
hierarquia podem nao ser do mesmo tipo, como no exemplo acima. Em C++ e
Java, essa distincao entre classe e tipo nao existe, e duas classes so'
podem ser do mesmo tipo se pertencerem `a mesma hierarquia (mas podem nao
pertencer, como no exemplo acima).  Isso e' assim em nome da performance e
da checagem de tipos em tempo de compilacao: nessas linguagens, uma classe
*e'* um tipo.

Ate' +
Nelson