Наследование в C#

НАВИГАЦИЯ ПО СТРАНИЦЕ

Объявление Доступ Переопределение методов Множественное наследование

Наследование в объектно-ориентированном программировании (ООП) позволяет классам получать функциональность от других классов. Класс, который наследует свойства и методы другого класса, называется подклассом или производным классом, а класс, который передает свою функциональность, называется базовым классом или суперклассом.

Ключевые аспекты наследования:

  1. Объявление наследования:

    Ключевое слово : используется для определения наследования в C#, за которым следует имя базового класса.

    Пример наследования:

    public class Animal
    {
        public void Eat()
        {
            Console.WriteLine("Animal is eating.");
        }
    }
    
    public class Dog : Animal
    {
        public void Bark()
        {
            Console.WriteLine("Woof!");
        }
    }
  2. Доступ к членам базового класса:

    Подклассы могут обращаться к членам (полям, методам) базового класса с использованием ключевого слова base.

    Пример использования base для доступа к методу базового класса:

    public class Dog : Animal
    {
        public void BarkAndEat()
        {
            base.Eat(); // Вызов метода Eat из базового класса
            Console.WriteLine("Dog is barking.");
        }
    }
  3. Переопределение методов:

    Подклассы могут переопределять методы базового класса с помощью ключевого слова override. Это позволяет изменить поведение метода в подклассе.

    Пример переопределения метода:

    public class Animal
    {
        public virtual void MakeSound()
        {
            Console.WriteLine("Some sound");
        }
    }
    
    public class Dog : Animal
    {
        public override void MakeSound()
        {
            Console.WriteLine("Woof!");
        }
    }
  4. Множественное наследование:

    Концепция множественного наследования в 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() из интерфейсов.

    Это позволяет создавать гибкие структуры программы, добавляя функциональность через интерфейсы и расширяя поведение через наследование базовых классов.

Наследование позволяет создавать иерархии классов, где классы могут наследовать функциональность от других классов, повторно использовать код и обеспечивать логическую структуру программы.