• Revista PROGRAMAR: Já está disponível a edição #53 da revista programar. Faz já o download aqui!

Gurzi

Abstract Classes

7 mensagens neste tópico

Boas, visto que uma classe não pode ser instanciada quando se trata de uma classe Abstracta , que sentido isto faz, por exemplo..

Imaginemos a classe Shape Abstracta e a classe Triangulo extends Abstracta

Ora

Shape t = new Triangulo();

Porquê fazer isto ??

Quais são as vantagens em relação a

Triangulo t = new Triangulo();

?

0

Partilhar esta mensagem


Link para a mensagem
Partilhar noutros sites

as vantagens são que podes instanciar a variável 't' com qualquer subclasse de Shape, enquanto que se 't' fosse do tipo Triangulo só poderia ser instanciada com coisas do tipo Triangulo ou subclasses deste tipo.

0

Partilhar esta mensagem


Link para a mensagem
Partilhar noutros sites

Polimorfismo :thumbsup: um conceito muito importante no mundo OO ^^

0

Partilhar esta mensagem


Link para a mensagem
Partilhar noutros sites

Vantagem... imagina que também tens a classe Quadrado extends Shape

Agora posso criar uma lista de objectos do tipo Shape e colocar lá dentro quadrados e triangulos juntos.

Bem isso talvez seja complicado de perceber com exemplos simples mas não me consigo lembrar de algo mais complicado.... a questão está mesmo no polimorfismo e de puderes usar a o objecto t, no teu caso, como sendo um triangulo, uma shape ou qualquer outro objecto que esteja abaixo da classe Shape na hierarquia de classes.

0

Partilhar esta mensagem


Link para a mensagem
Partilhar noutros sites

ok, ou seja, se o t for um shape eu a meio do programa posso mudar o t por exemplo para

t = new Circulo();

isto tudo deriva de uma questão que eu vi e me faz um bocado confusão

InputStream in =  System.in;

InputStream é abstracto e estamos a defenir para ela o que o System.in retornar ?

Depois foi feito isto

in.read();

ou seja, estamos a utilizar um método de uma classe e ela nem foi instanciada nem criada ?

0

Partilhar esta mensagem


Link para a mensagem
Partilhar noutros sites

System.in é uma instância, o objecto já existe, na verdade o objecto é o "in" da classe System. Já viste, em Java, algum método não ter parâmetros?

O que estás a fazer é atribuir ao InputStream a stream System.in.

Logo quando fazes in.read() estás a aceder a uma referência que já existe :thumbsup:

0

Partilhar esta mensagem


Link para a mensagem
Partilhar noutros sites

Crie uma conta ou ligue-se para comentar

Só membros podem comentar

Criar nova conta

Registe para ter uma conta na nossa comunidade. É fácil!


Registar nova conta

Entra

Já tem conta? Inicie sessão aqui.


Entrar Agora