[fpc-pascal] class declaration questions
Mattias Gaertner
nc-gaertnma at netcologne.de
Sat Oct 13 00:50:25 CEST 2007
On Fri, 12 Oct 2007 18:41:19 -0300
Joao Morais <post at joaomorais.com.br> wrote:
> Felipe Monteiro de Carvalho wrote:
> > On 10/12/07, Marc Santhoff <M.Santhoff at t-online.de> wrote:
> >> Does object pascal allow a class declaration marked as an abstract
> >> class? Like in java for making sure the class can never be
> >> instantiated itself, only it's descendants can be?
> >
> > The compiler will issue a warning if you instantiate a class with
> > abstract methods
>
> Only if creating an instance straight from the class, eg:
>
> This will warn:
>
> begin
> VMyObj := TMyAbstract.Create;
>
> This wont:
>
> var
> VMyClass: TMyAbstractClass;
> begin
> VMyClass := TMyAbstract;
> VMyObj := VMyClass.Create;
Correct. The compiler can only warn about compile time errors, not
runtime errors.
For runtime you can use
constructor TMyAbstract.Create;
begin
if ClassType=TMyAbstract then raise Exception.Create('abstract
class');
inherited Create;
end;
Mattias
More information about the fpc-pascal
mailing list