Начинаем программировать на языке Java


Абстрактные классы - часть 3


// Нарисовать квадрат public void Draw() { // Здесь рисуется квадрат } }

Теперь у нас есть все необходимое для рисования фигур. Можно создавать их в оперативной памяти и рисовать на экране:

Point point = new Point(); Circle circle = new Circle(); Square square = new Square(); point.Draw(); circle.Draw(); square.Draw();

В качестве дополнительного "бесплатного пирожка" мы получили возможность хранить все унаследованные от Shape объекты в одном массиве, не обращая внимания на их тип:

// Создаем массив Shape[] shape = new Shape[3]; shape[0] = new Point(); shape[1] = new Circle(); shape[2] = new Square();

Мы даже можем вызывать методы Draw для всех элементов этого массива, не заботясь об их типе. Руководствуясь идеей полиморфизма, Java сам отследит тип объектов и вызовет корректный метод:

shape[0].Draw(); // Вызывает Point.Draw(); shape[1].Draw(); // Вызывает Circle.Draw(); shape[2].Draw(); // Вызывает Square.Draw();

Я специально упростил пример, оставив лишь голый шаблон, и не указал конструкторов классов, методы инициализации, методики рисования и т. п. Если хотите, в качестве упражнения можете дописать эту программу до конца.

Два замечания напоследок:

  • абстрактный метод не имеет тела, поскольку мы не знаем, что будет в нем;
  • если унаследовать класс от абстрактного, но оставить нереализованным хотя бы один его абстрактный метод, то унаследованный класс также будет абстрактным. Чтобы избавиться от "абстрактности", необходимо реализовать код для всех абстрактных методов абстрактного класса-предка.



  • Начало  Назад  Вперед



    Книжный магазин