Answer
# 1 |
<b>Abstract Class :</b>In an object-oriented drawing
application, you can draw circles, rectangles, lines, Bezier
curves, and many other graphic objects. These objects all
have certain states (for example: position, orientation,
line color, fill color) and behaviors (for example: moveTo,
rotate, resize, draw) in common. Some of these states and
behaviors are the same for all graphic objects—for example:
position, fill color, and moveTo. Others require different
implementations—for example, resize or draw. All
GraphicObjects must know how to draw or resize themselves;
they just differ in how they do it. This is a perfect
situation for an abstract superclass. You can take advantage
of the similarities and declare all the graphic objects to
inherit from the same abstract parent object—for example,
GraphicObject, as shown in the following figure.
Classes Rectangle, Line, Bezier, and Circle inherit from
GraphicObject
Classes Rectangle, Line, Bezier, and Circle inherit from
GraphicObject
First, you declare an abstract class, GraphicObject, to
provide member variables and methods that are wholly shared
by all subclasses, such as the current position and the
moveTo method. GraphicObject also declares abstract methods
for methods, such as draw or resize, that need to be
implemented by all subclasses but must be implemented in
different ways. The GraphicObject class can look something
like this:
abstract class GraphicObject {
int x, y;
...
void moveTo(int newX, int newY) {
...
}
abstract void draw();
abstract void resize();
}
Each non-abstract subclass of GraphicObject, such as Circle
and Rectangle, must provide implementations for the draw and
resize methods:
class Circle extends GraphicObject {
void draw() {
...
}
void resize() {
...
}
}
class Rectangle extends GraphicObject {
void draw() {
...
}
void resize() {
...
}
}
When an Abstract Class Implements an Interface
In the section on Interfaces , it was noted that a class
that implements an interface must implement all of the
interface's methods. It is possible, however, to define a
class that does not implement all of the interface methods,
provided that the class is declared to be abstract. For example,
abstract class X implements Y {
// implements all but one method of Y
}
class XX extends X {
// implements the remaining method in Y
}
In this case, class X must be abstract because it does not
fully implement Y, but class XX does, in fact, implement Y.
*************************************************************
|
| Pushpa |