Полиморфизм и переопределение методов
Освойте полиморфизм, чтобы создавать гибкий и повторно используемый код с помощью переопределения методов
«Полиморфизм и переопределение методов» — бесплатный урок C# Academy на CoddyKit. Это урок 7 из 7. Ты можешь прочитать весь урок бесплатно ниже — а потом практиковать его прямо в браузере с встроенным редактором кода и ИИ-репетитором 24/7. Это часть пути обучения C# Academy, и твой прогресс синхронизируется между веб-версией и приложением CoddyKit. Курс C# Academy содержит 7 уроков всего.
Введение в полиморфизм
Полиморфизм и переопределение методов
Добро пожаловать в следующий урок! В этом уроке вы узнаете о полиморфизме — важной концепции объектно-ориентированного программирования, которая позволяет переопределять методы для создания гибкого и повторно используемого кода. Давайте начнём!

Что такое полиморфизм?
Что такое полиморфизм?
Полиморфизм означает «многообразие форм» и позволяет обращаться с объектами разных классов как с объектами общего базового класса. Это делает код более гибким и позволяет повторно его использовать.
Пример: Метод может вести себя по-разному в зависимости от типа объекта, с которым он работает.
Ключевой момент: В C# полиморфизм достигается с помощью переопределения методов и интерфейсов.
Понимание переопределения методов
Понимание переопределения методов
Переопределение методов позволяет производному классу предоставить особую реализацию метода, уже определённого в базовом классе. Используйте ключевое слово virtual в базовом классе и ключевое слово override в производном классе. Пример:
Совет: Переопределение методов гарантирует, что для объекта будет вызван правильный метод независимо от типа ссылки на него.
using System;
class Animal {
public virtual void Speak() {
Console.WriteLine("The animal makes a sound.");
}
}
class Dog : Animal {
public override void Speak() {
Console.WriteLine("The dog barks.");
}
}
class Cat : Animal {
public override void Speak() {
Console.WriteLine("The cat meows.");
}
}
class Program {
static void Main() {
Animal myDog = new Dog();
Animal myCat = new Cat();
myDog.Speak(); // Outputs: The dog barks.
myCat.Speak(); // Outputs: The cat meows.
}
}
Использование полиморфизма
Использование полиморфизма
Полиморфизм позволяет писать код, работающий с объектами разных типов через общий интерфейс. Пример:
Ключевой момент: Полиморфизм позволяет писать более универсальный и повторно используемый код.
using System;
class Animal {
public virtual void Speak() {
Console.WriteLine("The animal makes a sound.");
}
}
class Dog : Animal {
public override void Speak() {
Console.WriteLine("The dog barks.");
}
}
class Cat : Animal {
public override void Speak() {
Console.WriteLine("The cat meows.");
}
}
class Program {
static void Main() {
Animal[] animals = { new Dog(), new Cat() };
foreach (Animal animal in animals) {
animal.Speak(); // Calls the appropriate method for each object
}
}
}
Использование базового ключевого слова при переопределении
Использование базового ключевого слова при переопределении
Ключевое слово base используется для вызова метода базового класса из переопределённого метода. Пример:
Совет: Используйте base, если хотите сохранить функциональность базового класса в переопределённом методе.
using System;
class Animal {
public virtual void Speak() {
Console.WriteLine("The animal makes a sound.");
}
}
class Dog : Animal {
public override void Speak() {
base.Speak(); // Calls the base class method
Console.WriteLine("The dog barks.");
}
}
class Program {
static void Main() {
Dog myDog = new Dog();
myDog.Speak(); // Outputs: The animal makes a sound. The dog barks.
}
}
Абстрактные классы и методы
Абстрактные классы и методы
Абстрактные классы служат основой для производных классов. Они могут содержать абстрактные методы, которые необходимо переопределить в производном классе. Пример:
Ключевой момент: Абстрактные методы требуют, чтобы производные классы предоставляли собственную реализацию.
using System;
abstract class Animal {
public abstract void Speak(); // Abstract method
}
class Dog : Animal {
public override void Speak() {
Console.WriteLine("The dog barks.");
}
}
class Program {
static void Main() {
Animal myDog = new Dog();
myDog.Speak(); // Outputs: The dog barks.
}
}
Практическое задание
Практическое задание
Создайте абстрактный класс Shape с абстрактным методом CalculateArea(). Создайте производные классы Rectangle и Circle, реализующие метод CalculateArea(). Пример:
using System;
abstract class Shape {
public abstract double CalculateArea();
}
class Rectangle : Shape {
public double Width { get; set; }
public double Height { get; set; }
public override double CalculateArea() {
return Width * Height;
}
}
class Circle : Shape {
public double Radius { get; set; }
public override double CalculateArea() {
return Math.PI * Radius * Radius;
}
}
class Program {
static void Main() {
Shape rectangle = new Rectangle { Width = 4, Height = 5 };
Shape circle = new Circle { Radius = 3 };
Console.WriteLine("Rectangle Area: " + rectangle.CalculateArea());
Console.WriteLine("Circle Area: " + circle.CalculateArea());
}
}
Рекомендации по полиморфизму
Рекомендации по полиморфизму
Вот несколько рекомендаций:
- Используйте полиморфизм, чтобы упростить код и избежать дублирования.
- Переопределяйте только те методы, которым требуется особое поведение в производных классах.
- Используйте абстрактные классы и методы для общих интерфейсов производных классов.
Совет: Полиморфизм упрощает расширение и сопровождение кода.
Отличная работа!
Отличная работа!
Поздравляем! Вы научились использовать полиморфизм и переопределение методов для написания гибкого и повторно используемого кода. В следующем уроке мы рассмотрим работу с интерфейсами, чтобы добиться абстракции и реализовать несколько вариантов поведения. Продолжайте программировать!

Часто задаваемые вопросы
Урок «Полиморфизм и переопределение методов» бесплатный?
Да — полный текст урока «Полиморфизм и переопределение методов» бесплатно доступен здесь в веб-версии. Чтобы практиковать его интерактивно (встроенный редактор кода и ИИ-репетитор 24/7) и разблокировать остальной курс C# Academy, подпишись на CoddyKit PRO. Курс C# Academy содержит 7 уроков всего.
Чему я научусь в уроке «Полиморфизм и переопределение методов»?
Освойте полиморфизм, чтобы создавать гибкий и повторно используемый код с помощью переопределения методов Ты практикуешь C# Academy с помощью реального кода, который запускаешь прямо в браузере, и ИИ-репетитор 24/7 отвечает на твои вопросы во время урока.
Нужен ли мне опыт, чтобы начать C# Academy?
Предыдущий опыт не требуется. C# Academy на CoddyKit структурирован для всех уровней — от новичков до продвинутых, поэтому ты можешь начать отсюда или с самого начала и учиться в своем темпе. Это урок 7 из 7.
Сколько времени занимает урок «Полиморфизм и переопределение методов»?
Большинство уроков CoddyKit занимают около 5–10 минут. Каждый из них компактный и интерактивный, поэтому ты постоянно делаешь прогресс и продолжаешь с того же места в веб-версии и приложении.
Можно ли писать и запускать код в этом уроке C# Academy?
Да. Каждый урок C# Academy включает встроенный редактор кода, поэтому ты пишешь и запускаешь реальный код прямо в браузере и получаешь моментальную обратную связь от AI — локальная установка не требуется.
Все уроки этого курса
- Что такое объектно-ориентированное программирование?
- Определение классов и объектов
- Свойства и методы
- Конструкторы в C#
- Инкапсуляция и модификаторы доступа
- Наследование: повторное использование кода
- Полиморфизм и переопределение методов