Оператор преобразования наследника в предка - C#
Формулировка задачи:
Всем доброго времени суток! Нужна помощь в решении проблемы. Как можно все-таки хоть каким-нибудь способом привести Human к Creator?
Листинг программы
- class Creature // private default
- {
- // общие признаки живого существа
- protected string name = "unknown species";
- protected string sex;
- public Creature(string name, string sex)
- {
- this.name = name;
- this.sex = sex;
- }
- public Creature()
- {
- name = "Unknown";
- sex = "Unknown";
- }
- public void PrintCreature()
- {
- Console.WriteLine("Name: " + name + "\nSex: " + sex);
- }
- // запрещает и явное и неявное преобразование в предка
- public static explicit operator Creature(Human human)
- {
- return new Creature(human.name, human.sex);
- }
- }
- class Human:Creature
- {
- private string name = "Human"; // скрыли поле предка
- private sex = "male";
- public Human() {}
- public Human(string sex)
- {
- this.sex = sex;
- }
- }
Решение задачи: «Оператор преобразования наследника в предка»
textual
Листинг программы
- class Creature // private default
- {
- // общие признаки живого существа
- protected string name = "unknown species";
- protected string sex;
- public Creature(string name, string sex)
- {
- this.name = name;
- this.sex = sex;
- }
- public Creature()
- {
- name = "Unknown";
- sex = "Unknown";
- }
- public void PrintCreature()
- {
- Console.WriteLine("Name: " + name + "\nSex: " + sex);
- }
- // КАК ПРАВИЛЬНО ВЫПОЛНИТЬ ПЕРЕГРУЗКУ ЭТОГО ОПЕРАТОРА?
- public static Creature operator + (Human human, Bird bird)
- {
- // допустим сделаем новое имя, составленное из половинок передаваемых human и bird и случайно выберем один из полов
- return new Creature(new_name, new_sex);
- }
- }
- class Human:Creature
- {
- private string name = "Human"; // скрыли поле предка
- private sex = "male";
- public Human() {}
- public Human(string sex)
- {
- this.sex = sex;
- }
- }
- class Bird:Creature
- {
- private string name = "Bird";
- private sex = "male";
- public Bird(){}
- public Bird(string sex)
- {
- this.sex = sex;
- }
- }
ИИ поможет Вам:
- решить любую задачу по программированию
- объяснить код
- расставить комментарии в коде
- и т.д