Презентация на тему: Обращение к методу класса-предка

Обращение к методу класса-предка
Обращение к методу класса-предка
Вложенные классы
Вложенные классы
Вложенные классы
Область видимости
Область видимости
Область видимости
Область видимости
1/9
Средняя оценка: 4.8/5 (всего оценок: 52)
Код скопирован в буфер обмена
Скачать (81 Кб)
1

Первый слайд презентации: Обращение к методу класса-предка

Пусть теперь метод Compare() будет нестатичным и описывается в самом классе Person. В этом случае возникает вопрос, как из класса-наследника обратиться к методу класса-предка. Для этого используется ключевое слово base, отсылающее к предку текущего класса. class Person { public string Compare(Person p) { bool equal = Equals(p); / / переопределенный метод bool fullEqual = base.Equals (p); / / метод класса-предка if ( fullEqual ) return " Совпадение по ссылкам " ; if (equal ) return " Совпадение по свойствам " ; return " Объекты различны " ; } }

Изображение слайда
2

Слайд 2: Обращение к методу класса-предка

Следует отметить, что если ключевое слово this отсылало нас к объекту текущего класса, то ключевое слово base отсылает нас к предку текущего класса. При обращении по ключевому слову base всегда вызывается метод класса-предка, даже если он был переопределен в классе-наследнике при помощи ключевого слово override. Кроме того, вызвать метод класса-предка через ключевое слово base можно только из самого класса-наследника, но не из какого-либо другого.

Изображение слайда
3

Слайд 3: Вложенные классы

Ранее мы работали только с независимыми классами. Однако классы могут быть вложены друг в друга. public class Box { / / Описание свойств и методов класса Box public class Window { / / Описание свойств и методов класса Window public void ShutWindow () { / * Код метода ShutWindow () * / } } Window w = new Window(); / / Переменная типа Window public Window FrontWindow / / Свойство FrontWindow { get { return w } set { w = value } } }

Изображение слайда
4

Слайд 4: Вложенные классы

Чтобы стало возможным превратить класс Window в свойство FrontWindow, он должен быть открытым (описан с использованием модификатора доступа public ). Вызовем метод ShutWindow () у вложенного (nested) класса: Box b = new Box(); b.FrontWindow.ShutWindow (); Вложенные классы видны только в пределах класса-хозяина. Поэтому описание такого же окна в другом классе (например, в классе House ) потребует копирования всего кода. В связи с этим универсальные классы лучше описывать как независимые, а не вложенные. Если вложенный класс объявлен как private, то его экземпляр может создать только объект такого же класса или объект, родительский для данного. При этом объект не будет виден наследникам от родительского. Объекты класса, описанного с protected, могут создаваться как родительским объектом, так и наследниками от родительского.

Изображение слайда
5

Слайд 5: Вложенные классы

public class Window { / / Описание свойств и методов класса Window public void ShutWindow () { / * Код метода ShutWindow () * / } } public class Box { / / Описание свойств и методов класса Box Window w = new Window(); / / Переменная типа Window public Window FrontWindow / / Свойство FrontWindow { get { return w } set { w = value } } }

Изображение слайда
6

Слайд 6: Область видимости

using System; class Program { int fact = 1; public static void Main() { int max = 5; for ( int i = 2; i <= max; i ++ ) { fact *= i ; } Console.WriteLine (fact); } }

Изображение слайда
7

Слайд 7: Область видимости

Область видимости переменной определяется рядом правил. Если переменная была объявлена внутри класса, но вне метода, то она видна всем методам класса независимо от ее модификаторов доступа ( например, переменная fact видна во всем классе ). При объявлении внутри метода переменная будет доступна до соответствующей закрывающей фигурной скобки } ( например, переменная max доступна только в пределах метода Main() ). Если переменная объявлена внутри цикла, то она видна только в пределах цикла ( например, переменная i недоступна за пределами цикла for ).

Изображение слайда
8

Слайд 8: Область видимости

При описании классов область видимости их составляющих следует регулировать при помощи модификаторов доступа private, protected и public. Изначально при объявлении элементов класса лучше указывать для них модификатор доступа private (выставляется по умолчанию, если модификатор доступа не был указан). В этом случае составляющие класса будут доступны только в пределах своего класса-хозяина и недоступны даже его потомкам. Если классу-потомку требуется получить доступ элементу класса-родителя (например, к методу), для данного элемента следует сменить модификатор доступа на protected. Если же требуется, чтобы элемент класса был доступен не только потомкам, но и вообще любым сторонним классам, в этом случае модификатор доступа меняется на public. Для переменных класса public использовать нежелательно (но допускается protected, чтобы переменную могли видеть наследники класса). Работу с закрытой переменной лучше организовать через превращение её в свойство, для которого настроить работу аксессоров get и set.

Изображение слайда
9

Последний слайд презентации: Обращение к методу класса-предка: Область видимости

Иногда требуется запретить саму возможность наследования от определенного класса (например, чтобы исключить возможность нарушения работы программы через доступ к закрытым элементам класса посредством наследования). Запретить наследование можно, указав перед объявляемым классом ключевое слово sealed (англ. «запечатать»). sealed public class Person / / Класс закрыт для наследования { / / Описание класса } public class MyPerson : Person / / Ошибка наследования { / / Описание класса }

Изображение слайда