Совпадение имен методов в родительском и дочернем классах
Поможем в ✍️ написании учебной работы
Поможем с курсовой, контрольной, дипломной, рефератом, отчетом по практике, научно-исследовательской и любой другой работой

n Сигнатуры различны

    Перегрузка – добавляется метод с другими параметрами

n Сигнатуры совпадают

    Переопределение – замещение версии метода, объявленной в базовом классе, новой, с точно такой же сигнатурой

 

Переопределение методов

n При обращении извне объекта производного класса к его методу всегда вызывается новая версия метода

n Доступ к методу базового класса изнутри объекта дочернего класса может быть получен с помощью ключевого слова super

n Уровень доступа при переопределении не может сужаться

n Методы private не переопределяются

 

Переопределение методов

n В предложении throws дочернего метода не может быть типов исключений, не совместимых с типами в предложении throws родительского метода

n Переопределенный метод может быть снабжен модификатором abstract

n Признаки synchronized, native и strictfp могут изменяться произвольно

 

Замечание

Важно понимать, что:

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

n Сокрытие полей – последствие отсутствия ограничений на имена полей

 

Вопрос 39 Расширение классов. Сокрытие полей. 38,40-42 Лекция Исключительные ситуации и их обработка

 

Сокрытие полей

n Поля не переопределяются, но скрываются

n Поле базового класса при сокрытии продолжает существовать, но недоступно непосредственно по имени

n Доступ можно получить с помощью ключевого слова super либо через ссылочную переменную родительского типа

n Имеет право на существование следующая конструкция: ( VeryBaseClass ) this

 

Сокрытие статических членов

n Статические члены не могут быть переопределены, они скрываются

n Обычно для доступа используется имя класса, поэтому проблем не возникает

n Если используется ссылка, то учитывается объявленный тип ссылки, а не фактический тип объекта

 

Давешний результат

public static void main(String[] args) {

ExtendShow ext = new ExtendShow();

SuperShow sup = ext;

ext.show();

sup.show();

System.out.println("ext.str = " + ext.str);

System.out.println("sup.str = " + sup.str);

}

 

Extend.show: ExtendStr

Extend.show: ExtendStr

ext.str = ExtendStr

sup.str = SuperStr

 

 

Замечание

Важно понимать, что:

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

n Сокрытие полей – последствие отсутствия ограничений на имена полей

 

 

Вопрос 40 Ключевое слово super и его использование.

 39 Лекция Исключительные ситуации и их обработка

 

Служебное слово super

n Действует как ссылка на текущий экземпляр по контракту базового класса

n Может быть использовано в теле любого нестатического члена класса

n Формы использования

l Вызов конструктора родительского класса
super (...)

l Вызов метода родительского класса
super . method (...)

l Обращение к полю родительского класса
super . field

 

 




Вопрос 41 Абстрактные и завершённые классы в Java

 43-44 Исключительные ситуации и их обработка

Завершенные методы и классы

 

n Завершенный метод не допускает переопределения

final public int getValue() { ... }

 

n Завершенный класс не допускает расширения

 

final class MyClass {

//...

}

 

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

n Абстрактные методы описывают сигнатуру без реализации

abstract public int getValue();

n Класс с абстрактными методами обязан быть абстрактным

abstract class MyClass {...}

n Расширяющий класс может перекрыть своими абстрактными родительские реализованные методы

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

n Создавать объекты абстрактных типов нельзя!

 

Вопрос 42 Интерфейсы. Общий синтаксис. Пустые интерфейсы. 45,55 Лекция Исключительные ситуации и их обработка

 

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

n Позволяет описать тип в полностью абстрактной форме

n Экземпляры интерфейсов создавать нельзя

n Реализация классом интерфейса означает согласие класса на внешний контракт, описываемый реализуемым интерфейсом

n Классы способны реализовывать один или несколько интерфейсов

 

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

 

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

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

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

n Даже такая ссылка позволяет выполнять методы объекта…

    а именно методы, объявленные в классе Object, поскольку они есть у абсолютно любого объекта

 

Вопрос 43 Интерфейсы. Расширение и реализация. Применение. Сравнение с абстрактными классами. 49-54 Лекция Исключительные ситуации и их обработка

Дата: 2019-07-30, просмотров: 295.