Читайте также:
|
|
class Человек
{
protected string фам;
public Человек(string фам)
{
this.фам = фам;
}
public virtual void Показать()
{
Console.WriteLine("Я - человек: " + фам);
}
}
class Студент:Человек
{
private string вуз;
public Студент(string фам, string вуз):base(фам)
{
this.вуз = вуз;
}
}
class Владелец: Человек
{
private string ном;
public Владелец(string фам, string ном): base(фам)
{
this.ном = ном;
}
public new void Показать()
{
Console.WriteLine("Я - владелец: " + фам + " --> " + ном);
}
}
class Служащий: Человек
{
private string фирма;
public Служащий(string фам, string фирма): base(фам)
{
this.фирма = фирма;
}
public override void Показать()
{
Console.WriteLine("Я - служащий: "+фам +" ____ "+ фирма);
}
}
class Program
{
static void Main(string[] args)
{
Человек ч;
Студент ст = new Студент("Иванов","МИСиС");
Владелец вл = new Владелец("Петров", "A777AA-99RUS");
Служащий сл = new Служащий("Сидоров", "Рога и копыта");
ч = ст;
ч.Показать(); //Вызов метода предка
//Я - человек: Иванов
ст.Показать(); //Вызов метода предка
//Я - человек: Иванов
ч = вл;
ч.Показать(); //Вызов метода предка
//Я - человек: Петров
вл.Показать(); //Вызов метода наследника
//Я - владелец: Петров --> A777AA-99RUS
ч = сл;
ч.Показать(); //Вызов метода наследника
//Я - служащий: Сидоров ____ Рога и копыта
сл.Показать(); //Вызов метода наследника
//Я - служащий: Сидоров ____ Рога и копыта
}
}
Класс, содержащий хотя бы один абстрактный метод, является абстрактным, о чем должно быть указано в определении класса
abstract class ИмяКласса
{
……………………………
}
Потомки обязаны переопределять абстрактный метод с модификатором override (new невозможно, т.к. у предка нет никакой версии реализации метода).
abstract class Человек
{
protected string фам;
public Человек(string фам)
{
this.фам = фам;
}
public abstract void Показать();
}
class Студент:Человек
{
private string вуз;
public Студент(string фам, string вуз):base(фам)
{
this.вуз = вуз;
}
public override void Показать()
{
Console.WriteLine("Я - студент: " + фам + " " + вуз);
}
}
class Владелец: Человек
{
private string ном;
public Владелец(string фам, string ном): base(фам)
{
this.ном = ном;
}
public override void Показать()
{
Console.WriteLine("Я - владелец: " + фам + " --> " + ном);
}
}
class Служащий: Человек
{
private string фирма;
public Служащий(string фам, string фирма): base(фам)
{
this.фирма = фирма;
}
public override void Показать()
{
Console.WriteLine("Я - служащий: "+фам + " ____ " + фирма);
}
}
class Program
{
static void Main(string[] args)
{
Человек ч;
Студент ст = new Студент("Иванов","ВШЭ");
Владелец вл = new Владелец("Петров", "A777AA-99RUS");
Служащий сл = new Служащий("Сидоров", "Рога и копыта");
ч = ст;
ч.Показать(); //Вызов метода наследника
//Я - студент: Иванов ВШЭ
ст.Показать(); //Вызов метода наследника
//Я - студент: Иванов ВШЭ
ч = вл;
ч.Показать(); //Вызов метода наследника
//Я - владелец: Петров --> A777AA-99RUS
вл.Показать(); //Вызов метода наследника
//Я - владелец: Петров --> A777AA-99RUS
ч = сл;
ч.Показать(); //Вызов метода наследника
//Я - служащий: Сидоров ____ Рога и копыта
сл.Показать(); //Вызов метода наследника
//Я - служащий: Сидоров ____ Рога и копыта
}
}
Объекты абстрактного класса создать невозможно.
Дата добавления: 2015-07-15; просмотров: 69 | Нарушение авторских прав
<== предыдущая страница | | | следующая страница ==> |
Наследование классов | | | Глава 1. ОБЩИЕ ПОЛОЖЕНИЯ НАСЛЕДСТВЕННОГО ПРАВА |