Следите за новинками
в нашем Telegram канале. Жми, чтобы подписаться:)
⊗jvOpAbCM 58 of 147 menu
◀ ▶

Обычные методы в абстрактном классе Java

Абстрактный класс не обязан состоять только из абстрактных методов. В одном типе удобно держать и обычные методы с реализацией, и объявления без тела, которые потомки должны дописать сами.

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

abstract class Content { private String title = ""; public String getTitle() { return title; } public void setTitle(String title) { this.title = title; } public void printTitle() { System.out.println(getTitle()); } public abstract String render(); }

Метод printTitle уже имеет тело - его не переопределяют в Post и Page, а просто вызывают. Метод render в каждом потомке свой:

class Post extends Content { private String text = ""; @Override public String render() { return text; } } class Page extends Content { @Override public String render() { return "static"; } }

В абстрактном классе допустимы приватные вспомогательные методы - их вызывают только методы того же класса. Публичный метод родителя может пользоваться такой проверкой:

abstract class Content { private String title = ""; private boolean isNotEmpty(String text) { return !text.isEmpty(); } public void setTitle(String title) { if (isNotEmpty(title)) { this.title = title; } } public String getTitle() { return title; } public abstract String kind(); } class Post extends Content { @Override public String kind() { return "post"; } }

Модификатор protected у метода родителя позволяет вызывать его из тела потомка, но не из произвольного кода снаружи класса.

Сделайте абстрактный класс Figure с методом describe, который выводит на экран площадь и периметр фигуры. Сделайте методы getArea и getPerimeter абстрактными. Реализуйте класс Circle.

← →
↑
Мы используем cookie для работы сайта, аналитики и персонализации. Обработка данных происходит согласно Политике конфиденциальности.
принять все настроить отклонить