Ricardo Malikoski wrote: Resposta no meio do texto.
> Pessoal passei a utilizar o Delphi.Net (versão 2006) e tive um problemas > com classes. Fiz o seguinte: > > Criei uma classe assim: (deixei ela enxuta assim apenas pra tentar isolar > o erro) > > > type > TPersistente = class(TObject) > private > public > function Persistir() : boolean; virtual; abstract; > end; > > em outra unit: > > obs: o tipo "Departamento" é uma classe em outra unit > > type > DepartamentoDAO = class (TPersistente) > private > public > function Persistir(pDepto : Departamento) : boolean; reintroduce; > overload; Você não está implementando o método virtual Persistir, ao invés disto você criou outro método com o mesmo nome. Remova o reintroduce, troque overload por override. Como métodos override devem ter o mesmo formato que o método virtual, então você escolhe entre remover o parâmetro pDepto ou adicionar este parâmetro na classe abstrata. > end; > > implementation > > > { DepartamentoDAO } > > function DepartamentoDAO.Persistir(pDepto: Departamento): Boolean; > begin > > end; > > > Em uma outra unit quando eu crio o DepartamentoDAO dá um erro de > compilação: > > function Departamento.Persistir: Boolean; > var > objPersistente : DepartamentoDAO; > begin > objPersistente := DepartamentoDAO.Create; -->> aqui acontece o erro: > [Pascal Error] ClassDepartamento.pas(56): E2402 > > Constructing instance of abstract class > 'DepartamentoDAO' Até o Delphi não-sei-que-versão, isto era apenas um warning. É o problema que eu citei acima, você tem que implementar o método abstrato Persistir. > result := objPersistente.Persistir(self); > objPersistente.Free; > end; > > > O que fazer ? já tentei várias coisas e nada... > -- Joao Morais