Оператор преобразования наследника в предка - 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;
    }
}

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


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

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

9   голосов , оценка 3.889 из 5
Похожие ответы