Описание виртуальной функции вне тела класса - C#

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

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

Добра. Такой вопрос: Пускай у меня есть абстрактный класс Animal. У него есть виртуальная функция Voice. Могу ли я для класса Dog как-то описать эту функцию, но в ходе выполнения программы, в зависимости от введённых данных. (Пример очень условный) Спасибо.

Решение задачи: «Описание виртуальной функции вне тела класса»

textual
Листинг программы
namespace ConsoleApplication1
{
    abstract class Algorithm
    {
        abstract public string Encrypt(string text);
        abstract public string Decrypt(string text);
    }
 
    class AES : Algorithm
    {
 
        public override string Encrypt(string text)
        {
            return "IN AES ENCRYPT";
        }
 
        public override string Decrypt(string text)
        {
            return "IN AES DECRYPT";
        }
    }
    class VIG : Algorithm
    {
 
        public override string Encrypt(string text)
        {
            return "IN VIG ENCRYPT";
        }
 
        public override string Decrypt(string text)
        {
            return "IN VIG  DECRYPT";
        }
    }
    class UserAlg : Algorithm
    {
        public delegate string AlgorithmDelegate(string text);
        private AlgorithmDelegate encrypt;
        private AlgorithmDelegate decrypt;
        public UserAlg(AlgorithmDelegate encrypt, AlgorithmDelegate decrypt)
        {
            this.encrypt = encrypt;
            this.decrypt = decrypt;
        }
        public override string Encrypt(string text)
        {
            return encrypt(text);
        }
 
        public override string Decrypt(string text)
        {
            return decrypt(text);
        }
    }
    class Program
    {
        static void Main(string[] args)
        {
            AES aes = new AES();
            VIG vig = new VIG();
            UserAlg ua = new UserAlg(aes.Encrypt, vig.Decrypt);
            Console.WriteLine(ua.Encrypt(""));
            Console.WriteLine(ua.Decrypt(""));
            UserAlg ua2 = new UserAlg((s) => { return "MY ENCRYPT"; }, (s) => { return "MY DECRYPT"; });
            Console.WriteLine(ua2.Encrypt(""));
            Console.WriteLine(ua2.Decrypt(""));
            Console.ReadKey();
        }
    }
}

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


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

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

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