Абстрактные классы в C#

Абстрактный класс- это базовый класс, который не предполагает создание экземпляров. Абстрактные классы реализуют на практике один из принципов ООП - полиморфизм. Абстрактный класс может содержать/не содержать абстрактные методы и свойства. Абстрактный метод не реализуется для классов, в котором написан, но должен быть реализован для их неабстрактных потомков. При определении абстрактного класса в C# используется слово abstract. При переопределении в производном классе методов, они объявляются с модификатором override. Когда в производном классе указывается ключевое слово base, вызывается конструктор из его базового класса.
Пример. Создадим класс абстрактный Cat и класс-наследник HomeCat. У всех кошек есть возраст, а у домашних кошек есть возраст и кличка. В базовом классе будет объявлен абстрактный метод View, который переопределяется в дочернем классе.

Абстрактный класс
public abstract class Cat{
private int age;
public int Age{
//Специальные методы достпуа
get { return age;}
set { if(value>0) age= value;
else age = 0; }
}
public abstact void View();
public Cat(){
age = 0;
}
public Cat(int a){
if(a>0) age= a;
else age = 0;
}
}
view raw Cat.cs hosted with ❤ by GitHub
Класс-наследник
public class HomeCat : Cat {
private string name;
public string Name{
get { return name;}
set { name = value; }
}
public HomeCat():base(){
name = "no name";
}
public HomeCat(int a, string h):base (a) {
name = h;
}
public override void View(){
Console.WriteLine("Домашняя кошка {0}, {1}", Name, Age);
}
}
view raw HomeCat.cs hosted with ❤ by GitHub
Главная форма
static void Main(...){
Cat kot = new HomeCat(5, "Васька");
kot.View(); //Домашняя кошка Васька, 5
Cat kot1 = new HomeCat();
kot1.View(); //Домашняя кошка no name, 0
Console.ReadKey();
}
view raw Program.cs hosted with ❤ by GitHub

Комментарии

Популярные сообщения