Добавил:
Rumpelstilzchen2018@yandex.ru Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:

3-й семестр / Лекции / 4 - Презентация 2 - ООП

.pdf
Скачиваний:
59
Добавлен:
25.12.2020
Размер:
596.48 Кб
Скачать

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

Лекция 4 Программирование на

Java

ФИО преподавателя: Зорина Наталья Валентиновна e-mail: zorina@mirea.ru,zorina_n@mail.ru

Online-edu.mirea.ru

online.mirea.ru

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

Тема лекции:

«ООП в Java»

online.mirea.ru

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

Абстрактные классы

public abstract class Shape { public abstract double getX(); public abstract double getY(); public abstract double getArea();

}

Наследование создает проблемы только при наследовании/переопределении конкретных методов (наследование реализации).

online.mirea.ru

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

Интерфейсы

public interface Shape { double getX(); double getY(); double getArea();

}

Интерфейсы не могут иметь полей и конкретных методов – только абстрактные методы.

online.mirea.ru

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

Интерфейсы

public class Circle implements Shape {

private double x;

private double y;

private double radius;

@Override

public double getArea() {

return Math.PI * radius * radius;

}

}

Shape s1 = new Circle(0, 0, 2);

online.mirea.ru

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

Интерфейсы

public class Rectangle implements Shape {

private double x;

private double y;

private double width;

private double height;

@Override

public double getArea() {

return width * height;

}

}

Shape s1 = new Rectangle(10, 10, 2, 1);

online.mirea.ru

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

Интерфейсы

public abstract class AbstractShape implements Shape {

private double x;

private double y;

protected AbstractShape(double x, double y) { this.x = x; this.y = y; }

@Override

public double getX() { return x; }

@Override

public double getY() { return y; }

}

online.mirea.ru

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

Интерфейсы

public class Circle extends AbstractShape implements Shape {

private double radius;

public Circle(double x, double y, double radius) {

super(x, y);

this.radius = radius;

}

@Override

public double getArea() {

return Math.PI * radius * radius;

}

}

online.mirea.ru

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

Интерфейсы

Класс может наследоваться (extends) только от одного класса-предка, но реализовывать (implements) несколько интерфейсов:

class Example1 implements IBase1, IBase2 { ... } class Example2 extends Base

implements IBase1, IBase2 { ... }

online.mirea.ru

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

Интерфейсы

Реализация интерфейса, так же как и наследование, выражает отношение “является” (“is a”), но скорее в смысле “обладает свойством”. Так как свойств может быть много, то класс может реализовывать несколько интерфейсов.

online.mirea.ru