228 ◾ Software Essentials
one cannot instantiate an object from a class with an abstract method.
Again, contrast the clarity of using a self-documenting language keyword
to dene an abstract class, as shown in Example8.3, with a design solution
to dene abstract classes, as shown in Example 8.4.
Example 8.3: Abstract Classes in C# and Java
abstract class Vehicle
{ … }
Example 8.4: Abstract Classes in C++
// no keyword abstract => at least one method must be pure virtual
class Toy
{ public:
virtual bool safe() = 0;
…
};
// no keyword abstract
// => protected constructor, no public constructor
class Vehicle
{
protected:
Vehicle();
public:
…
};
An abstract class denes the interface for its descendants and estab-
lishes a dependency on descendants. ...