[Prévia] [Próxima] [Prévia por assunto] [Próxima por assunto]
[Índice cronológico]
[Índice de assunto]
Re: Exceções, interfaces e Java
- Subject: Re: Exceções, interfaces e Java
- From: PROTECTED
- Date: Wed, 17 Apr 2002 18:36:54 -0300
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