Урок № 23. Закрепление материала


Закрепление материала

Доброго времени суток! Этот урок, как я и обещал, будет практическим. В нем я модернизирую пример из предыдущего урока, и покажу Вам как можно использовать отношения между класса, которые устанавливает наследование. Если говорить конкретнее, то мы будем работать с объектами производных классов, через ссылку базового типа.

//Базовый класс, описывающий оружие
class Weapon
{
    //Атака оружием
    public virtual void Attack()
    {
        Console.WriteLine("Weapon Attack!");
    }
}

//Класс-наследник оружия, описывает нож
class Knife : Weapon
{
    //Атака ножом
    public override void Attack()
    {
        Console.WriteLine("Knife Attack!");
    }
}

//Класс-наследник оружия, описывает ружьё
class Gun : Weapon
{
    //Атака ружьём
    public override void Attack()
    {
        Console.WriteLine("Gun Attack!");
    }
}

class Program
{
    static void Main(string[] args)
    {
        //Создаем три объекта, по одному для каждого класса
        Weapon weapon = new Weapon();
        Knife knife = new Knife();
        Gun gun = new Gun();

        //Временная ссылка базового типа (на текущее оружие)
        Weapon currentWeapon = weapon;
   
        //Сообщение пользователю
        string message = "Используемые клавиши: \nEnter - Атака \n1 - Основное оружие\n2 - Нож\n3 - Ружьё\nEsc - Выход";

        //Вывод сообщения
        Console.WriteLine(message);

        //Для хранения введенного пользователем кода клавиши
        ConsoleKeyInfo currentKey = new ConsoleKeyInfo();

        //Пока пользователь не нажал на клавишу Esc
        while (currentKey.Key != ConsoleKey.Escape)
        {
            //Получить код нажатой клавиши
            currentKey = Console.ReadKey();
 
            //В зависимости от кода
            switch (currentKey.Key)
            {
                //Пользователь нажал клавишу "1"
                case ConsoleKey.D1:
                    //Сменить оружие
                    currentWeapon = weapon;
                    Console.WriteLine(".Текущее оружие: основное оружие");
                break;

                //Пользователь нажал клавишу "2"
                case ConsoleKey.D2:
                    //Сменить оружие
                    currentWeapon = knife;
                    Console.WriteLine(".Текущее оружие: нож");
                break;

                //Пользователь нажал клавишу "3"
                case ConsoleKey.D3:
                     //Сменить оружие
                     currentWeapon = gun;
                     Console.WriteLine(".Текущее оружие: ружьё");
                break;

                //Пользователь нажал на клавишу Enter
                case ConsoleKey.Enter:
                //Огонь!
                    currentWeapon.Attack();
                break;
            }
        }
    }
}

Попробуйте собрать проект и запустить программу. Поэкспериментируйте с вводом… А в следующем уроке, поговорим про наследование от интерфейсов и о том, что такое сами интерфейсы!

Перейти к следующему уроку