Абстрактные классы, интерфейсы. Вложенные классы, анонимные, локальные презентация

Содержание

Слайд 2

Абстрактные классы Класс объявленный со спецификатором abstract Может содержать абстрактные

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

Класс объявленный со спецификатором abstract
Может содержать абстрактные методы (методы без

реализации).
abstract class A {
abstract void m();
}

Kolesnikov D.O. SED KNURE

Слайд 3

Свойства абстрактного класса Нельзя создать экземпляр, но можно объявить переменную

Свойства абстрактного класса

Нельзя создать экземпляр, но можно объявить переменную данного типа
Может

иметь конструкторы
Может содержать обычные методы

Kolesnikov D.O. SED KNURE

Слайд 4

Предназначение абстрактных классов Интерфейс к семейству классов. База для реализации

Предназначение абстрактных классов
Интерфейс к семейству классов.
База для реализации полиморфизма.
Неабстрактные потомки обязаны

реализовать абстрактные методы.

Kolesnikov D.O. SED KNURE

Слайд 5

Абстрактный метод Метод, который не содержит реализации. Обязан быть объявлен

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

Метод, который не содержит реализации.
Обязан быть объявлен со спецификатором
abstract
public abstract

void m();

Kolesnikov D.O. SED KNURE

Слайд 6

Вложенные классы Элементы класса статические нестатические Локальные анонимные с указанием имени Kolesnikov D.O. SED KNURE

Вложенные классы

Элементы класса
статические
нестатические
Локальные
анонимные
с указанием имени

Kolesnikov D.O. SED KNURE

Слайд 7

Примеры классов class A { // класс верхнего уровня void

Примеры классов

class A { // класс верхнего уровня
void m(SomeClass p) {…}
class

B {} // класс элемент класса
void m() {
class C {} // С – локальный класс
m(new SomeClass() { // ан. класс
});
}
}

Kolesnikov D.O. SED KNURE

Слайд 8

Классы - элементы классов Могут иметь модификаторы/спецификаторы: abstract static final private/protected/default/public Kolesnikov D.O. SED KNURE

Классы - элементы классов

Могут иметь модификаторы/спецификаторы:
abstract
static
final
private/protected/default/public

Kolesnikov D.O. SED KNURE

Слайд 9

Локальные классы Классы, объявленные внутри методов, конструкторов, блоках инициализации. Могут

Локальные классы

Классы, объявленные внутри методов, конструкторов, блоках инициализации.
Могут быть: abstract, final
Уровень

доступа - default, по умолчанию, ограничен телом блока, в котором объявлен класс.

Kolesnikov D.O. SED KNURE

Слайд 10

Анонимные классы Класс, который не имеет имени. Всегда расширяет класс

Анонимные классы

Класс, который не имеет имени.
Всегда расширяет класс или реализует интерфейс.
Используется

при создании объектов.

Kolesnikov D.O. SED KNURE

Слайд 11

Пример анонимного класса class T {} T t = new

Пример анонимного класса

class T {}
T t = new T() {
void m()

{...}
}
t - переменная типа T, кот. ссылается на экземпляр анонимного класса, наследованного от T.

Kolesnikov D.O. SED KNURE

Слайд 12

Свойства внутренних классов Не могут объявлять статических полей (кроме констант),

Свойства внутренних классов

Не могут объявлять статических полей (кроме констант), методов и

классов (но могут наследовать их.
Имеют доступ к элементам внешнего класса.
Имеют доступ к локальным переменным и параметрам метода (они должны быть объявлены как final).

Kolesnikov D.O. SED KNURE

Слайд 13

Создание объектов внутреннего класса (нестатические элементы классов) Расширенный синтаксис оператора

Создание объектов внутреннего класса

(нестатические элементы классов)
Расширенный синтаксис оператора new
class A {
class

B {}
}
A a = new A();
A.B b = a.new B();

Kolesnikov D.O. SED KNURE

Слайд 14

Создание объектов вложенных статических классов class A { static class

Создание объектов вложенных статических классов
class A {
static class B {}
}
A.B b

= new A.B();

Kolesnikov D.O. SED KNURE

Слайд 15

Доступ к объекту внешнего класса (this) из внутреннего class A

Доступ к объекту внешнего класса (this) из внутреннего
class A {
private int

x;
class B {
int x = A.this.x;
}
}

Kolesnikov D.O. SED KNURE

Слайд 16

Имя файла с байт-кодом вложенного класса Для каждого класса компилятор

Имя файла с байт-кодом вложенного класса
Для каждого класса компилятор (javac) создает

отдельный файл класса.
Outer$Inner.class

Kolesnikov D.O. SED KNURE

Слайд 17

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

Интерфейсы

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

сторона.

Kolesnikov D.O. SED KNURE

Слайд 18

Использование интерфейсов Класс может реализовывать интерфейс Можно объявить интерфейсную переменную

Использование интерфейсов

Класс может реализовывать интерфейс
Можно объявить интерфейсную переменную
Интерфейс может наследовать несколько

других интерфейсов

Kolesnikov D.O. SED KNURE

Слайд 19

Элементы интерфейса поля (public static final) методы (public abstract) интерфейсы

Элементы интерфейса

поля (public static final)
методы (public abstract)
интерфейсы (public static)
классы (public static)
Указанные

модификаторы и спецификаторы можно не ставить.

Kolesnikov D.O. SED KNURE

Слайд 20

Поля интерфейса константы (final) статические (static) публичные (public) должны быть

Поля интерфейса

константы (final)
статические (static)
публичные (public)
должны быть проинициализированы при объявлении

Kolesnikov D.O. SED

KNURE
Слайд 21

Методы интерфейса абстрактные (abstract) публичные (public) Kolesnikov D.O. SED KNURE

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

абстрактные (abstract)
публичные (public)

Kolesnikov D.O. SED KNURE

Слайд 22

Вложенные классы и интерфейсы- элементы интерфейсов Статические Kolesnikov D.O. SED KNURE

Вложенные классы и интерфейсы- элементы интерфейсов
Статические

Kolesnikov D.O. SED KNURE

Слайд 23

Множественное наследование интерфейсов interface Interf extends Interf1, Interf2 { ... } Kolesnikov D.O. SED KNURE

Множественное наследование интерфейсов
interface Interf extends Interf1, Interf2 {
...
}

Kolesnikov D.O. SED KNURE

Слайд 24

Реализация интерфейса class A implements Interf1, Interf2 { ... } Kolesnikov D.O. SED KNURE

Реализация интерфейса

class A implements Interf1, Interf2 {
...
}

Kolesnikov D.O. SED KNURE

Слайд 25

Реализация интерфейсов и расширение класса class A extends B implements

Реализация интерфейсов и расширение класса
class A extends B implements Interf1, Interf2

{
...
}

Kolesnikov D.O. SED KNURE

Слайд 26

Оператор instanceof для интерфейсов interface I {} class A implements

Оператор instanceof для интерфейсов
interface I {}
class A implements I {}
...
boolean f

= new A() instanceof I; // f = true

Kolesnikov D.O. SED KNURE

Имя файла: Абстрактные-классы,-интерфейсы.-Вложенные-классы,-анонимные,-локальные.pptx
Количество просмотров: 93
Количество скачиваний: 0