Should certain abstract classes be instantiable?
Steven Schveighoffer
schveiguy at yahoo.com
Fri Oct 2 09:55:29 PDT 2009
On Thu, 01 Oct 2009 16:30:43 -0400, Andrei Alexandrescu
<SeeWebsiteForEmail at erdani.org> 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?
If you want to force a class to be abstract, even though it technically
could be concrete given it has implementations for all functions, you
could allow that by marking the class abstract. i.e.:
abstract class A {
void fun() {}
}
The other side, allowing A to be instantiated, makes no sense whatsoever.
If you (as a class designer) want something to be instantiated, and it has
all methods implemented, why mark it abstract? IMO, it should be a
compiler error to give implementation to an abstract method.
-Steve
More information about the Digitalmars-d
mailing list