Студопедия
Главная страница | Контакты | Случайная страница

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

Виды наследования

Читайте также:
  1. Виды наследования
  2. Выборочная композиция против наследования
  3. Налог на имущество, переходящее в порядке наследования
  4. ОЦЕНКА ДЛЯ БАНКОВ, ВСТУПЛЕНИЕ В ПРАВА НАСЛЕДОВАНИЯ, ДЛЯ СУДА, РАЗДЕЛ ИМУЩЕСТВА
  5. Синтаксис наследования

Класс Расширяет класс

Реализует интерфейсы Наследование как внешнего контракта, так и реализации

Интерфейс

Расширяет интерфейсы Наследование ТОЛЬКО внешнего контракта

 

Объявление интерфейсов:

interface Somethingable {

// константы

// методы

// вложенные классы и интерфейсы

}

1. Все члены интерфейса по умолчанию обладают признаком public

2. Применение других модификаторов редко имеет смысл

3. Бывают пустые интерфейсы

Константы в интерфейсах:

interface Verbose {

int SILENT = 0;

int TERSE = 1;

int NORMAL = 2;

int VERBOSE = 3;

}

Имеют неявные модификаторы public static final

Должны быть снабжены инициализаторами

 

Методы в интерфейсах:

interface Verbose {

void setVerbosity(int level);

int getVerbosity();

}

Имеют неявные модификаторы public abstract

Не могут иметь модификаторов native synchronized strictfp static final

 

Расширение интерфейсов интерфейсами:

interface NewVerbose extends Verbose, Runnable {

//...

}

Допускается сокрытие констант!

Переопределение метода не несет семантической нагрузки.Совпадение имен наследуемых методов не несет семантической нагрузки.

 

Реализация интерфейсов классами:

class MyNewThread

extends MyThread

implements Runnable, Verbose {

...

}

1. Интерфейсы реализуются классами

2. Класс может реализовывать несколько интерфейсов

3. Если класс не реализует все методы «наследуемых» интерфейсов, он является абстрактным

4.

Интерфейс или абстрактный класс?

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

2)Класс может расширять единственный базовый класс, даже если тот содержит только абстрактные методы.

3)Абстрактный класс частично может быть реализован, он вправе содержать члены, помеченные как protected и/или static и т.п.

4)Структура интерфейса ограничена объявлениями public -констант и public -методов без какой бы то ни было реализации.

 

Ссылки интерфейсных типов:

1. Допускаются ссылки интерфейсных типов

2. Такая ссылка позволяет выполнять над объектом операции, описанные во внешнем контракте, обусловленном типом интерфейса

3.Такое средство существенно расширяет возможности полиморфизма

 

Использование типов:

1. Ссылочные типы

2. Неявное приведение

3. Явное приведение

MyNewThread mnt = new MyNewThread();

MyThread mt = mnt;

Runnable r1 = mnt;

Runnable r2 = mt; // Ошибка!!!

mnt = (MyNewThread)mt; // Возможен выброс исключения

mnt = (MyNewThread)r1; // ClassCastException

 

 

Пустые интерфейсы:

1. Существуют пустые интерфейсы, объявления которых не содержат ни констант, ни методов

2. Реализация таких интерфейсов обычно означает способность объекта к чему-либо

3. Ссылка такого типа редко имеет смысл (т.к. внешний контракт пуст)

4. Даже такая ссылка позволяет выполнять методы объекта…а именно методы, объявленные в классе Object, поскольку они есть у абсолютно любого объекта

 

 




Дата добавления: 2015-09-11; просмотров: 117 | Поможем написать вашу работу | Нарушение авторских прав

Лекция №1 | Локальные переменные | Легальные значения | Объявление, инициализация, заполнение | Встроенный в язык механизм проверки и обработки | Особый синтаксис описания обработчиков исключений | Виды наследования | OutputStreamWriter | Лекция №5 | Параметризованные фабричные методы |


lektsii.net - Лекции.Нет - 2014-2025 год. (0.055 сек.) Все материалы представленные на сайте исключительно с целью ознакомления читателями и не преследуют коммерческих целей или нарушение авторских прав