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

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

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

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

public class Shape ...

public class Circle extends Shape ...

public class Rectangle extends Shape ...

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

Shape s2 = new Rectangle(10, 10, 3, 1);

Shape s3 = new Shape(1, 1); // Что это за фигура?

Создание объектов класса Shape не имеет смысла, он нужен только как предок других классов

online.mirea.ru

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

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

public abstract class Shape {

private double x; private double y;

//Для абстрактных классов конструктор обычно

//имеет доступ protected, так как вызывается только

//из наследников:

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

this.y = y;

}

}

online.mirea.ru

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

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

Экземпляр абстрактного класса невозможно создать:

Shape s0 = new Shape(0, 0); // Ошибка

Абстрактные классы используются для выражения того, что класс используется только в качестве базового класса для наследования, а не сам по себе

online.mirea.ru

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

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

Абстрактные (и только абстрактные) классы могут иметь абстрактные методы:

public abstract class Shape {

private double x; private double y;

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

this.y = y;

}

// Площадь 0 не имеет смысла для конкретной фигуры: public abstract double getArea();

}

online.mirea.ru

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

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

Метод, являющийся абстрактным, должен быть определен в классе-потомке (так как у него нет реализации, которая могла бы быть унаследована от базового класса)

public class Circle extends Shape {

// Ошибка: метод getArea() не определен

}

online.mirea.ru

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