Ir para o conteúdo
  • Revista PROGRAMAR: Já está disponível a edição #57 da revista programar. Faz já o download aqui!

Gurzi

Abstract Classes

Mensagens Recomendadas

Gurzi    2
Gurzi

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();

?

Partilhar esta mensagem


Link para a mensagem
Partilhar noutros sites
Rui Carlos    309
Rui Carlos

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.

Partilhar esta mensagem


Link para a mensagem
Partilhar noutros sites
Knitter    101
Knitter

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.

Partilhar esta mensagem


Link para a mensagem
Partilhar noutros sites
Gurzi    2
Gurzi

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 ?

Partilhar esta mensagem


Link para a mensagem
Partilhar noutros sites
Knitter    101
Knitter

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:

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


×

Aviso Sobre Cookies

Ao usar este site você aceita a nossa Política de Privacidade