Разделы презентаций


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

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

Слайды и текст этой презентации

Слайд 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 "Объекты различны";
}
}

Обращение к методу класса-предкаПусть теперь метод Compare() будет нестатичным и описывается в самом классе Person. В этом

Слайд 2Обращение к методу класса-предка
Следует отметить, что если ключевое слово this

отсылало нас к объекту текущего класса, то ключевое слово base

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

Обращение к методу класса-предкаСледует отметить, что если ключевое слово this отсылало нас к объекту текущего класса, то

Слайд 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 } }
}
Вложенные классыРанее мы работали только с независимыми классами.	Однако классы могут быть вложены друг в друга.	public class Box	{

Слайд 4Вложенные классы
Чтобы стало возможным превратить класс Window в свойство FrontWindow,

он должен быть открытым (описан с использованием модификатора доступа public).

Вызовем

метод ShutWindow() у вложенного (nested) класса:
Box b = new Box();
b.FrontWindow.ShutWindow();

Вложенные классы видны только в пределах класса-хозяина. Поэтому описание такого же окна в другом классе (например, в классе House) потребует копирования всего кода. В связи с этим универсальные классы лучше описывать как независимые, а не вложенные.
Если вложенный класс объявлен как private, то его экземпляр может создать только объект такого же класса или объект, родительский для данного. При этом объект не будет виден наследникам от родительского. Объекты класса, описанного с protected, могут создаваться как родительским объектом, так и наследниками от родительского.



Вложенные классыЧтобы стало возможным превратить класс Window в свойство FrontWindow, он должен быть открытым (описан с использованием

Слайд 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 } }
}
Вложенные классы	public class Window	{		// Описание свойств и методов класса Window		public void ShutWindow()		{ /* Код метода ShutWindow() */

Слайд 6Область видимости
using System;

class Program
{
int fact = 1;

public static void Main()
{
int

max = 5;

for (int i = 2; i

i++) { fact *= i; }

Console.WriteLine(fact);
}
}
Область видимости	using System;	class Program	{		int fact = 1;		public static void Main()		{			int max = 5;			for (int i = 2;

Слайд 7Область видимости
Область видимости переменной определяется рядом правил.
Если переменная была объявлена

внутри класса, но вне метода, то она видна всем методам

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

Область видимостиОбласть видимости переменной определяется рядом правил.Если переменная была объявлена внутри класса, но вне метода, то она

Слайд 8Область видимости
При описании классов область видимости их составляющих следует регулировать

при помощи модификаторов доступа private, protected и public.
Изначально при объявлении

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


Область видимостиПри описании классов область видимости их составляющих следует регулировать при помощи модификаторов доступа private, protected и

Слайд 9Область видимости
Иногда требуется запретить саму возможность наследования от определенного класса

(например, чтобы исключить возможность нарушения работы программы через доступ к

закрытым элементам класса посредством наследования). Запретить наследование можно, указав перед объявляемым классом ключевое слово sealed (англ. «запечатать»).

sealed public class Person // Класс закрыт для наследования
{
// Описание класса
}

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

Обратная связь

Если не удалось найти и скачать доклад-презентацию, Вы можете заказать его на нашем сайте. Мы постараемся найти нужный Вам материал и отправим по электронной почте. Не стесняйтесь обращаться к нам, если у вас возникли вопросы или пожелания:

Email: Нажмите что бы посмотреть 

Что такое TheSlide.ru?

Это сайт презентации, докладов, проектов в PowerPoint. Здесь удобно  хранить и делиться своими презентациями с другими пользователями.


Для правообладателей

Яндекс.Метрика