// Использование полиморфизма времени выполнения.
class
Figure {
double
diml;
double
dim2;
Figure(double
a, double
b) {
diml
= a;
dim2
= b;
}
double
area() {
System.out.println("Площадь
Figure не определена.");
return
0;
}
}
class
Rectangle extends
Figure {
Rectangle(double
a, double
b) {
super(a,
b);
}
//
переопределить area для прямоугольника
double
area() {
System.out.println("Внутри
Area для
Rectangle.");
return
diml
* dim2;
}
}
class
Triangle extends
Figure {
Triangle(double
a, double
b) {
super(a,
b);
}
//
переопределить area для прямоугольного
треугольника
double
area() {
System.out.println("Внутри
Area для
Triangle.");
return
diml
* dim2
/ 2;
}
}
class
FindAreas {
public
static
void
main(String args[]) {
Figure
f = new
Figure(10, 10);
Rectangle
r = new
Rectangle(9, 5);
Triangle
t = new
Triangle(10, 8);
Figure
figref;
figref
= r;
System.out.println("Площадь
равна
"
+ figref.area());
figref
= t;
System.out.println("Площадь
равна
"
+ figref.area ());
figref
= f;
System.out.println("Площадь
равна
"
+ figref.area ());
}
}
Результат работы:
Внутри
Area для Rectangle.
Площадь
равна 45.0
Внутри
Area для Triangle.
Площадь
равна 40.0
Площадь
Figure не определена.
Площадь
равна 0.0
Полиморфизм – это замечательная
возможность сделать Ваши программы
более короткими и изящными, хотя без
этого можно обойтись (см. пример
FindAreas2.java).
19