Иванов А.П.
Public class HumanDemo
Else
if (HumanAge!= value)
{ HumanAge = value; // Сохранение значения в поле
// Рассылка события смены возраста
// AgeChanged(HumanAge);
}
}
}
public void OutputName() // Определение метода вывода имени
{ Console.WriteLine(HumanName);
}
}
{ // private void SomeNameChanged(string name)
// { // Обработка события смены имени
// Console.WriteLine("Имя изменено на " + name);
// }
// private void SomeAgeChanged(short age)
// { // Обработка события смены возраста
// Console.WriteLine("Возраст изменен на " + age.ToString());
// }
static void Main() // Точка входа в программу
{ Human h = new Human(); // Создание экземпляра класса
// (объекта)
// Регистрация обработчиков двух событий
// AddHandler h.NameChanged, AddressOf SomeNameChanged
// h.NameChanged += new EventHandler(SomeNameChanged);
// AddHandler h.AgeChanged, AddressOf SomeAgeChanged
// h.AgeChanged += new EventHandler(SomeAgeChanged);
h.Name = "Иванов А.П."; //?Вызывает обработку события
// изменения имени
h.OutputName(); // Вывод имени
h.Age = 25; //?Вызывает обработку события
// изменения возраста
Console.WriteLine(h.Age); // Вывод возраста
h.Age = 25; // Не вызывает обработку события,
// т.к. возраст не изменился
h.Age = -20; // Не вызывает обработку события,
|
|
// т.к. возраст не может быть
// отрицательным. Выводит сообщение
Console.WriteLine(h.Age); // Вывод возраста. Результат тот же
Console.ReadLine(); // Ожидание нажатия клавиши <Enter>
}
}
}
/* Вывод:
? Имя изменено на Иванов А.П.
? Возраст изменен на 25
*/
2. Наследование (MSDN_ООП_VB+C#_2010)
Наследование позволяет создавать новые классы, которые повторно используют, расширяют и изменяют поведение, определенное в другом классе. Класс, члены которого наследуются, называется базовым классом, а класс, который наследует эти члены, называется производным классом. Следует учитывать, что все классы в C# и Visual Basic неявно наследуются от класса Object, который поддерживает иерархию классов.NET и предоставляет низкоуровневые службы для всех классов.
Примечание. Управляемые языки в.NET Framework не поддерживают множественное наследование, т.е. можно задать только один базовый класс для производного класса.
Наследование от базового класса:
class DerivedClass:BaseClass{}
По умолчанию унаследовать класс можно от любого класса. Однако можно указать, должен ли класс использоваться в качестве базового класса, или создать класс, который может использоваться только в качестве базового.
Указание, что класс не может использоваться в качестве базового класса:
public sealed class A {}
Указание, что класс может использоваться только в качестве базового класса и нельзя создать экземпляр этого класса:
public abstract class B {}
Переопределяющие члены.
По умолчанию производный класс наследует все члены от своего базового класса. Если необходимо изменить поведение унаследованного члена, необходимо переопределить его. Т.е. в производном классе можно определить новую реализацию метода, свойства или события.
|
|
Следующие модификаторы используются для управления переопределением свойств и методов.
Модификатор Visual Basic | Модификатор C# | Определение |
Overridable (Visual Basic) | virtual (Справочник по C#) | Разрешает переопределение члена класса в производном классе. |
Overrides (Visual Basic) | override (Справочник по C#) | Переопределяет виртуальный (переопределяемый) член в базовом классе. |
NotOverridable (Visual Basic) | Не поддерживается | Запрещает переопределение члена в наследующем классе. |
MustOverride (Visual Basic) | abstract (Справочник по C#) | Требует, чтобы член класса был переопределен в производном классе. |
Shadows (Visual Basic) | Модификатор new (Справочник по C#) | Скрывает член, наследуемый от базового класса |