Материал: 3 - Презентация

Внимание! Если размещение файла нарушает Ваши авторские права, то обязательно сообщите нам

Центр дистанционного обучения

Полиморфизм – зачем?

public class Circle {

 

public class Rectangle {

private double x;

 

private double x;

private double y;

 

private double y;

private double radius;

 

private double width;

 

 

private double height;

public double getArea() {

 

public double getArea() {

return Math.PI * radius * radius;

 

return width * height;

}

 

}

// конструкторы/get/set

 

// конструкторы/get/set

}

 

}

 

 

 

online.mirea.ru

Центр дистанционного обучения

Полиморфизм – зачем?

Как создать массив, содержащий и круги, и прямоугольники?

CircleOrRectangle[] shapes = …;

class CircleOrRectangle {

}

online.mirea.ru

Центр дистанционного обучения

Полиморфизм – зачем?

Минусы – сложно расширять: CircleOrRectangleOrTriangleOrStar[] shapes = …; class CircleOrRectangleOrTriangleOrStar {

// должен включать свойства всех // возможных фигур

}

online.mirea.ru

Центр дистанционного обучения

Полиморфизм – зачем?

public class Shape {

 

private double x;

Класс-предок

 

private double y;

 

}

 

 

 

public class Circle extends Shape {

 

public class Rectangle extends Shape {

private double radius;

 

private double width;

 

 

private double height;

public double getArea() {

 

 

return Math.PI * radius * radius;

 

public double getArea() {

}

 

return width * height;

}

 

}

 

 

}

 

 

 

Классы-потомки

online.mirea.ru

Центр дистанционного обучения

Полиморфизм – зачем?

class Circle extends Shape

extends выражает отношение “является” или “является частным случаем”, “is a”.

В данном случае Круг является Фигурой (Circle is a Shape).

Circle c1 = new Circle(0, 0, 2);

Shape s1 = c1; // корректное присваивание

online.mirea.ru

Источник: https://studfile.net/preview/16403813/