Студопедия

Главная страница Случайная страница

Разделы сайта

АвтомобилиАстрономияБиологияГеографияДом и садДругие языкиДругоеИнформатикаИсторияКультураЛитератураЛогикаМатематикаМедицинаМеталлургияМеханикаОбразованиеОхрана трудаПедагогикаПолитикаПравоПсихологияРелигияРиторикаСоциологияСпортСтроительствоТехнологияТуризмФизикаФилософияФинансыХимияЧерчениеЭкологияЭкономикаЭлектроника






Public String Name;






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

Если необходимо, чтобы базовый класс представлял только интерфейс для наследуемых классов, т.е. нет смысла создавать физические экземпляры некоторой обобщенной (или виртуальной) сущности, обычно размещаемой в верхних уровнях иерархии классов, то этого можно достичь созданием абстрактного класса, используя ключевое слово abstract при объявлении класса. При попытке создать объект абстрактного класса, компилятор предотвратит это. Это инструмент для навязывания определенного дизайна, который определяется абстрактными методами, которые не будут реализованы непосредственно в этом классе. Такой метод представляет собой интерфейсную функцию для всех типов, наследуемых от этого класса, но в в данном классе он не имеет реализации”.

Абстрактные методы;

Абстрактный метод может быть создан только внутри абстрактного класса. При наследовании такой метод должен быть реализован в производном классе. В противном случае наследуемый класс также станет абстрактным. Создание абстрактных методов позволяет помещать методы, определяя интерфейс и не заботиться о возможности создания бессмысленного кода для тела этого метода.

Абстрактные методы объявляются при помощи ключевого слова abstract следующим образом:

Abstract void my_f1();

Тело метода определяется в подклассах (конструкторы и статические методы не могут определяться как abstract).

Абстрактные методы удобно использовать если необходимо, чтобы некоторый метод присутствовал во всех классах, но во всех классах имел разную реализацию. Например, у нас может быть много типов работников (директора, программисты, бухгалтера,...), и все классы для этих типов являются потомками базового класса worker (в классе worker описаны общие атрибуты такие как: возраст, имя, телефон и т. п., поэтому дублировать их во всех классах нет смысла). Но некоторые методы должны работать по-разному. Например, это может быть метод setSalary() для начисления зарплаты. Для работников с почасовой системой оплаты способ будет один, для совместителей - другой, для постоянных работников - третий.

Т.е., метод должен присутствовать во всех классах-потомках, и в каждом из них он имеет свою реализацию, то такой метод объявляют в родительском классе абстрактным. Это означает, что в родительском классе мы не пишем реализацию этого метода (и не ставим после него фигурных скобок вообще).

Пример:

abstract class worker //абстрактный класс

{ protected int Age;

public String Name;






© 2023 :: MyLektsii.ru :: Мои Лекции
Все материалы представленные на сайте исключительно с целью ознакомления читателями и не преследуют коммерческих целей или нарушение авторских прав.
Копирование текстов разрешено только с указанием индексируемой ссылки на источник.