Наследование в C#
НАВИГАЦИЯ ПО СТРАНИЦЕ
Наследование в объектно-ориентированном программировании (ООП) позволяет классам получать функциональность от других классов. Класс, который наследует свойства и методы другого класса, называется подклассом или производным классом, а класс, который передает свою функциональность, называется базовым классом или суперклассом.
Ключевые аспекты наследования:
Объявление наследования:Ключевое слово : используется для определения наследования в C#, за которым следует имя базового класса.
Пример наследования:
public class Animal { public void Eat() { Console.WriteLine("Animal is eating."); } } public class Dog : Animal { public void Bark() { Console.WriteLine("Woof!"); } }
Доступ к членам базового класса:Подклассы могут обращаться к членам (полям, методам) базового класса с использованием ключевого слова base.
Пример использования base для доступа к методу базового класса:
public class Dog : Animal { public void BarkAndEat() { base.Eat(); // Вызов метода Eat из базового класса Console.WriteLine("Dog is barking."); } }
Переопределение методов :Подклассы могут переопределять методы базового класса с помощью ключевого слова override. Это позволяет изменить поведение метода в подклассе.
Пример переопределения метода:
public class Animal { public virtual void MakeSound() { Console.WriteLine("Some sound"); } } public class Dog : Animal { public override void MakeSound() { Console.WriteLine("Woof!"); } }
Множественное наследование :Концепция множественного наследования в C# отличается от некоторых других языков программирования, таких как C++. В C# класс может наследовать только один базовый класс напрямую, но он может реализовывать несколько интерфейсов.
Пример использования множественного наследования через интерфейсы в C#:
public class Animal { public virtual void MakeSound() { Console.WriteLine("Some sound"); } } public class Dog : Animal { public override void MakeSound() { Console.WriteLine("Woof!"); } }
В этом примере класс Circle наследует Shape и реализует интерфейсы IShape и IColor. Класс Shape служит в качестве базового класса с координатами x и y, а Circle расширяет его функциональность, реализуя методы Draw() и FillColor() из интерфейсов.
Это позволяет создавать гибкие структуры программы, добавляя функциональность через интерфейсы и расширяя поведение через наследование базовых классов.
Наследование позволяет создавать иерархии классов, где классы могут наследовать функциональность от других классов, повторно использовать код и обеспечивать логическую структуру программы.