Центр дистанционного обучения
Полиморфизм – как?
Circle c1 = new Circle(0, 0, 2);
Rectangle r1 = new Rectangle(10, 10, 3, 1); Shape[] shapes = {c1, r1};
x:0
y:0
radius: 2
x:10
y:10
width: 3 height: 1
shapes: [0] [1]
online.mirea.ru
Центр дистанционного обучения
Полиморфизм – как?
Circle c1 = new Circle(0, 0, 2);
Shape s1 = c1;
System.out.println(s1.getX());
|
|
x: 0 |
c1 |
|
|
|
|
y: 0 |
|
|
|
|
|
|
radius: 2
s1
online.mirea.ru
Центр дистанционного обучения
Полиморфизм – как?
public double getX() { return this.x;
}
|
|
x: 0 |
c1 |
|
|
|
|
y: 0 |
|
|
|
|
|
|
radius: 2
s1
class Shape
getX()
getY()
class Circle getX() getY()
online.mirea.ru
Центр дистанционного обучения
Полиморфизм – как?
Circle c1 = new Circle(0, 0, 2); Shape s1 = c1; System.out.println(s1.getClass());
Каждый объект имеет ссылку на описание класса, доступное через метод obj.getClass()
Описание класса включает в себя список методов этого класса
online.mirea.ru
Центр дистанционного обучения
Полиморфизм – как?
При наследовании “Circle extends Shape” методы копируются из описания класса Shape в описание класса Circle, так что вызов
Circle.getX() и Shape.getX() – вызов одного и того же метода.
online.mirea.ru