Урок № 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; } } } }
Попробуйте собрать проект и запустить программу. Поэкспериментируйте с вводом… А в следующем уроке, поговорим про наследование от интерфейсов и о том, что такое сами интерфейсы!