Студопедия
Случайная страница | ТОМ-1 | ТОМ-2 | ТОМ-3
АвтомобилиАстрономияБиологияГеографияДом и садДругие языкиДругоеИнформатика
ИсторияКультураЛитератураЛогикаМатематикаМедицинаМеталлургияМеханика
ОбразованиеОхрана трудаПедагогикаПолитикаПравоПсихологияРелигияРиторика
СоциологияСпортСтроительствоТехнологияТуризмФизикаФилософияФинансы
ХимияЧерчениеЭкологияЭкономикаЭлектроника

Наследование как средство изменения базового класса

Читайте также:
  1. I. Изменения тактических приёмов
  2. I. Наследование доли в уставном капитале общества с ограниченной ответственностью
  3. I. Формирование основных движений органов артикуля­ции, выработка их определённых положений проводится по­средством артикуляционной гимнастики.
  4. III.4. Изменения в сердце при АГ.
  5. IV. Порядок заключения, исполнения, измененияи прекращения договора о реализации туристского продукта
  6. V. Порядок изменения и отзыва заявок на участие в конкурсе
  7. VIII. Условия изменения человека и черты нового человека

 

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. ОБЩИЕ ПОЛОЖЕНИЯ НАСЛЕДСТВЕННОГО ПРАВА

mybiblioteka.su - 2015-2024 год. (0.008 сек.)