Classe abstrata

4 respostas
M

To com uma duvida, se eu não posso instanciar uma classe como então que eu posso fazer, por exemplo:

InputStream input = myConnection.getInputStream();

??

4 Respostas

K

Esse seu atributo myConnection é de que tipo?

Se a classe A é abstrata, você nao pode fazer por exemplo:

private A instancia = new A();
J

Isso chama-se polimorfismo, a classe que é instanciada não é a abstrata e sim uma subclasse dela:

ex.:

public abstract classe Ave{
   public abstract void voar();
}

public class Aguia extends Ave{
   public void voar(){
      System.out.println("Aguia voando...");
   }
}

public class Gaivota extends Ave{
   public void voar(){
      System.out.println("Gaivota voando...");
   }
}

Ave ave = new Aguia();
ave.voar(); //imprime Aguia voando
ave = new Gaivota();
ave.voar(); //imprime Gaivota voando

O mesmo acontece com o InputStream, no caso seria algo assim:

InputStream in = new FileInputStream("C:\teste.txt");
int b;

while((b = in.read())>-1){
   System.out.println(b);
}

http://pt.wikipedia.org/wiki/Polimorfismo

M

ta, entendi o polimorfismo, mas assim, o getInputStream retorna um ImputStream, então não ficaria algo como InputStream input = InputStream … ;
Sendo que o ImputStream é abstrato, ou ele converte pra alguma outra classe ? na API eu não achei qual o tipo que ele retorna que não seja o ImpuStream.

P

ele retorna uma outra classe que herda de ImputStream, toda classe que herdar de ImputStream também vai ser um ImputStream…

Criado 28 de setembro de 2006
Ultima resposta 28 de set. de 2006
Respostas 4
Participantes 4