Оператор преобразования наследника в предка - C#

Узнай цену своей работы

Формулировка задачи:

Всем доброго времени суток! Нужна помощь в решении проблемы. Как можно все-таки хоть каким-нибудь способом привести Human к Creator?
Листинг программы
  1. class Creature // private default
  2. {
  3. // общие признаки живого существа
  4. protected string name = "unknown species";
  5. protected string sex;
  6. public Creature(string name, string sex)
  7. {
  8. this.name = name;
  9. this.sex = sex;
  10. }
  11. public Creature()
  12. {
  13. name = "Unknown";
  14. sex = "Unknown";
  15. }
  16. public void PrintCreature()
  17. {
  18. Console.WriteLine("Name: " + name + "\nSex: " + sex);
  19. }
  20. // запрещает и явное и неявное преобразование в предка
  21. public static explicit operator Creature(Human human)
  22. {
  23. return new Creature(human.name, human.sex);
  24. }
  25. }
  26. class Human:Creature
  27. {
  28. private string name = "Human"; // скрыли поле предка
  29. private sex = "male";
  30. public Human() {}
  31. public Human(string sex)
  32. {
  33. this.sex = sex;
  34. }
  35. }

Решение задачи: «Оператор преобразования наследника в предка»

textual
Листинг программы
  1. class Creature // private default
  2.     {
  3.         // общие признаки живого существа
  4.         protected string name = "unknown species";
  5.         protected string sex;
  6.  
  7.         public Creature(string name, string sex)
  8.         {
  9.             this.name = name;
  10.             this.sex = sex;
  11.         }
  12.        
  13.         public Creature()
  14.         {
  15.                        name = "Unknown";
  16.                        sex = "Unknown";
  17.         }
  18.        
  19.         public void PrintCreature()
  20.         {
  21.             Console.WriteLine("Name: " + name + "\nSex: " + sex);
  22.         }
  23.        
  24.         // КАК ПРАВИЛЬНО ВЫПОЛНИТЬ ПЕРЕГРУЗКУ ЭТОГО ОПЕРАТОРА?
  25.         public static Creature operator + (Human human, Bird bird)
  26.         {
  27.             // допустим сделаем новое имя, составленное из половинок передаваемых human и bird и случайно выберем один из полов
  28.            
  29.             return new Creature(new_name, new_sex);
  30.         }
  31.        
  32.     }
  33.  
  34. class Human:Creature
  35. {
  36.     private string name = "Human"; // скрыли поле предка
  37.     private sex = "male";
  38.  
  39.     public Human() {}
  40.     public Human(string sex)
  41.     {
  42.         this.sex = sex;
  43.     }
  44. }
  45.  
  46. class Bird:Creature
  47. {
  48.     private string name = "Bird";
  49.     private sex = "male";
  50.  
  51.     public Bird(){}
  52.     public Bird(string sex)
  53.     {
  54.         this.sex = sex;
  55.     }
  56. }

ИИ поможет Вам:


  • решить любую задачу по программированию
  • объяснить код
  • расставить комментарии в коде
  • и т.д
Попробуйте бесплатно

Оцени полезность:

9   голосов , оценка 3.889 из 5

Нужна аналогичная работа?

Оформи быстрый заказ и узнай стоимость

Бесплатно
Оформите заказ и авторы начнут откликаться уже через 10 минут
Похожие ответы