Оператор преобразования наследника в предка - 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; } }
ИИ поможет Вам:
- решить любую задачу по программированию
- объяснить код
- расставить комментарии в коде
- и т.д