Não consigo instanciar classe abstrata com nome diferente.[RESOLVIDO]

9 respostas
psicoppardo

Criei uma classe Duck como está descrito abaixo

package patos;

public abstract class Duck {

	
	abstract public void palavra(); 

}

e outra com nome

package patos;

public class TestDuck {

	/**
	 * @param args
	 */
	
	
		// TODO Auto-generated method stub
		Duck duck = new Pato();

}

Os mais interessante que o Java não aceita a instância com um nome diferente.

retornando o seguinte erro:

Exception in thread "main" java.lang.Error: Unresolved compilation problem: 
	Cannot instantiate the type Duck

	at patos.TestDuck.main(TestDuck.java:12)

A versão do java que uso é a 1.7

Será que nesta versão do java não somos mais capazes de usar este artifício??

9 Respostas

nel

Cadê a classe Pato ? E ela tem de ser, obrigatoriamente, filha de Duck.

Master.Abs

psicoppardo:

Será que nesta versão do java não somos mais capazes de usar este artifício??

Se você criar uma classe pato que extends Duck creio que funciona.

public class Pato extends Duck {

....

}
D

você nao pode instanciar uma classe abstrata,

na linha:

Duck duck = new Pato();

você começa como se for instanciar em duck do tipo Duck e depois chama o construtor Pato(), que nao existe.
vc deve extender a classe Duck e criar a Pato e colocar

Pato duck = new Pato();
rmendes08

denisGermano:
você nao pode instanciar uma classe abstrata,

na linha:

Duck duck = new Pato();

você começa como se for instanciar em duck do tipo Duck e depois chama o construtor Pato(), que nao existe.
vc deve extender a classe Duck e criar a Pato e colocar

Pato duck = new Pato();

ele só precisa criar uma classe concreta Pato, você pode normalmente declarar variáveis cujo tipo sejam classes abstratas.

guilherme.dio
public class Pato extends Duck
{
  //Métodos
}

public class Testa
{
  public static void main(String[] args)
 {
     Duck pato = new Pato();
 }
}
psicoppardo

Eu concordo com todos, mas lendo o livro HeardFish: desing patterns, nas páginas 37 e 38 (exemple: SimUDuck) ele deixa a entender que é possível fazer dessa forma. Baixei os arquivos e compilei e mesmo assim dá erro. Estou com a pulga atrás da orelha, pois não sei se é a versão do java que uso ou se o exemplo do livro está errado.

Obrigado a todos pelas explicações.

psicoppardo

Alguém já leu este livro ???

psicoppardo

Bom pessoal, obrigado pelas explicações, realmente eu sou um “Animal”, pois tem que existir uma classe pato, no meu exemplo compreendi totalmente errado o livro, desculpe a escorregada feia que dei.

TÓPICO RESOLVIDO.

nel

psicoppardo:
Bom pessoal, obrigado pelas explicações, realmente eu sou um “Animal”, pois tem que existir uma classe pato, no meu exemplo compreendi totalmente errado o livro, desculpe a escorregada feia que dei.

TÓPICO RESOLVIDO.

Não se trata disso, mas provavelmente pela falta de experiência/conhecimento e muito possível, faltou atenção na leitura do livro. É claro que, isso não exclui a possibilidade de esse ou qualquer outro livro técnico ter algum erro, que fique claro isso. Agora, é só dar continuidade aos teus estudos e adicionar [Resolvido] ao fim do seu tópico.

Abraços.

Criado 3 de abril de 2012
Ultima resposta 4 de abr. de 2012
Respostas 9
Participantes 6