Should certain abstract classes be instantiable?

dsimcha dsimcha at yahoo.com
Thu Oct 1 14:13:34 PDT 2009


== Quote from Andrei Alexandrescu (SeeWebsiteForEmail at erdani.org)'s article
> Jeremie Pelletier wrote:
> > Andrei Alexandrescu wrote:
> >> Consider:
> >>
> >> class A {
> >>     abstract void fun() {}
> >> }
> >>
> >> The class defines a function that is at the same time abstract (so it
> >> requires overriding in derivees) and has implementation.
> >>
> >> Currently the compiler disallows creation of objects of type A,
> >> although technically that is feasible given that A defines the
> >> abstract method.
> >>
> >> Should A be instantiable? What designs would that help or hinder?
> >>
> >>
> >> Andrei
> >
> > What's the point of marking fun() abstract if it has an implementation,
> > I thought the compiler disallowed that.
> It may offer incomplete functionality that is to be reused and enhanced
> by descendants.
> Andrei

If you are in that situation, then don't declare the class abstract.  I thought
the whole point of abstract classes was that they can't be instantiated.  If it
can be instantiated, then what does abstract even mean?



More information about the Digitalmars-d mailing list