
- •2. Понятие и определение класса.
- •3. Объявление объектов и операция new
- •4. Модификаторы класса.
- •5. Использование атрибутов доступа к элементам класса (внутри класса)
- •6. Методы класса. Метод main(). Конструкторы класса.
- •7. Параметризация методов
- •8. Наследование
- •9. Модификаторы доступа при наследовании
- •10. Перегрузка и переопределение методов
- •11. Использов ключевого слова final
- •12. Понятие и использование абстрактных классов, абстрактных методов.
- •15. Примеры применения интерфейсов.
- •16. Потоки ввода и вывода информации
- •Классы символьных потоков
- •19.Работа с файлами
- •24. Обработки исключительнх ситуаций. Основные принципы обработки исключений..
- •25. Использование операторов try-catch-finally, throw и throws.Конструкция try-catch
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);}
Интерфейс позволяет реализовывать множественное наследование и иерархию классов.
Ограничения, накладываемые на интерфейс:
Модификатор доступа только public или не используется.
Метод интерфейса может быть только абстрактный.
Поля (переменные)- final или константы. Они не меняют значения, могут быть static.
Интерфейсы не могут иметь реализованных методов. Методы реализуются в классе, реализованном интерфейсом.
Таким образом, интерфейсы позволяют очертить некоторые постоянные характеристики, оставляя реализацию тела методов реализующим классам.
Пример:
class TestInt implements My_Int;{
public int myMethod(int i)
{ if ( i==0) return (0);
else return (i*i);
public vpid f1(){}}
Интерфейс может наследовать другой интерфейс. При наследовании методы базового интерфейса переходят в производный интерфейс. Если метода, объявленные в классе, имеют другой список параметров, чем в интерфейсе, то реализуется перегрузка метода, а не реализация метода. Сигнатура метода в интерфейсе и классе должна совпадать.