Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
JAVA шпоры.docx
Скачиваний:
1
Добавлен:
01.03.2025
Размер:
55.63 Кб
Скачать

12. Понятие и использование абстрактных классов, абстрактных методов.

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

Класс называется абстрактным, если он содержит хотя бы один абстрактный метод. Абстрактный класс может также содержать и неабстрактные методы. Интерфейсы, в отличие от абстрактных классов, содержат только абстрактные методы. Если внутри класса хотя бы один метод объявлён абстрактным, т.е. перед ним написано abstract, то и перед самим классом надо написать abstract.

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

Абстрактный метод и его реализация

abstract class worker

{ protected int Age;

public String Name;

abstract public void setSalary(int newSalary);

}

class boss extends worker

{ public void setSalary(int newSalary)

{ Salary = newSalary;}

}

Class engineer extends worker

{int Salary;

public void setSalary(int newSalary)

{Salary=newSalary*0.1;}

}

13-14.Интерфейсы. Определение интерфейсов. Реализация интерфейсов.

Интерфейс- это такой ссылочный тип, членами которого являются константы и абстрактные методы (только абстрактные).

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

Можно создавать интерфейсные ссылки.

Формальное определение интерфейса:

Модифик_доступа имяинтерфейса{

Тип_возвр_знач имя_мет1(список параметров);

……..

Тип_возвр_знач имя_метn(список параметров);

Тип имя_final_перем1=значен;

……..

Тип имя_final_перемm=значен;

Пример:

public interface MyInt{

Final String str=”Тест интерфейса”;

public int MyMethod(int i);}

Интерфейс позволяет реализовывать множественное наследование и иерархию классов.

Ограничения, накладываемые на интерфейс:

  1. Модификатор доступа только public или не используется.

  2. Метод интерфейса может быть только абстрактный.

  3. Поля (переменные)- final или константы. Они не меняют значения, могут быть static.

  4. Интерфейсы не могут иметь реализованных методов. Методы реализуются в классе, реализованном интерфейсом.

Таким образом, интерфейсы позволяют очертить некоторые постоянные характеристики, оставляя реализацию тела методов реализующим классам.

Пример:

class TestInt implements My_Int;{

public int myMethod(int i)

{ if ( i==0) return (0);

else return (i*i);

public vpid f1(){}}

Интерфейс может наследовать другой интерфейс. При наследовании методы базового интерфейса переходят в производный интерфейс. Если метода, объявленные в классе, имеют другой список параметров, чем в интерфейсе, то реализуется перегрузка метода, а не реализация метода. Сигнатура метода в интерфейсе и классе должна совпадать.

Соседние файлы в предмете [НЕСОРТИРОВАННОЕ]