Classe abstrata

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

??

Esse seu atributo myConnection é de que tipo?

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

private A instancia = new A();

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

ex.:

[code]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[/code]

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

[code]InputStream in = new FileInputStream(“C:\teste.txt”);
int b;

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

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.

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