in reply to Abstract Classes

To those not familer with OO-jargon, an abstract class is where the methods of a class are defined but not implemented.

That's not the generally agreed-on definition.

As a source on this (a source I have within reach), I'll cite the "Gang of Four" Design Patterns book, page 15:

An abstract class is one whose main purpose is to define a common interface for its subclasses. An abstract class will defer some or all of its implementation to operations defined in subclasses; hence an abstract class cannot be instantiated.

That's the definition I've been used to working with for the past decade or so.

You might be thinking of an "interface".

Replies are listed 'Best First'.
Re: Re: Abstract Classes
by Elgon (Curate) on Apr 29, 2003 at 12:40 UTC

    dws,

    This is exactly as I had it explained to me by those nice people at Sun when I did a Java course, what hardburn is describing sounds like an interface, as you say.

    • Abstract classes may or may not contain implementation for each of their methods and they may not be instantiated. There is no coercion of methods which the subclass must contain as any which are not implemented are inherited.

    • Interfaces are merely contracts which list the methods which an implementing class MUST have. They may not be instantiated either, but then again they aren't really classes and have no implementation so this should not be surprising

    The utility of these two when used together correctly is that an Abstract Class provides common behaviours which subclasses will inherit, whereas an Interface merely defines methods which any extending class must implement. In the first case neanderthals and humans both have the same drink() method inherited from the hominids abstract class, which they extend. In the second case, both humans and fish MUST be able to breathe as they both implement the breathers interface but the actual mechanisms used are different.

    Elgon

    If this node offends you, re-read it and reconsider. Think for a bit. I am almost certainly not trying to offend you, although I am frequently irreverent or flippant. Rememer - Please never take anything I do or say seriously.