В этом разделе много контента, а размер видеофайла превышает 4М, поэтому время загрузки может быть немного дольше. Пожалуйста, подождите еще немного
, потому что в этом разделе много контента
!только в наследовании, поэтому я воспользуюсь возможностью и воспользуюсь всем предыдущим, что считается обзором. Некоторые вещи в этом разделе объясняются снова и снова два или три раза. Цель состоит в том, чтобы надеяться, что каждый сможет. освоить их. Это самое главное! ! Если вы не уверены в содержании обзора в этом разделе, прочтите предыдущие соответствующие главы! !
Далее мы поговорим о наследовании. Чтобы понять наследование, нам сначала нужно знать, зачем нужно наследование.
Предположим, что класс, который мы создали для системы новостей, уже имеет подключение к базе данных, инициализацию и такие функции, как запрос, добавление, удаление, изменение и т. д. .!
Тогда нам обязательно придется выполнить несколько разных запросов, модификаций и т. д. Например, колонка новостей и управление пользователями должны использовать классы, о которых мы упоминали ранее, но разница в том, что они требуют разных результатов. что делать? Есть два способа. Один — создать для них классы отдельно и дважды скопировать класс подключения к базе данных. Думаю, о недостатках этого говорить не стоит. Тогда для достижения цели мы также можем часто вызывать члены класса базы данных. такое случается, не будет ли наш код сильно раздутым? Знаете ли вы, почему таблетки для похудения так популярны?
В депрессии, что мне делать? Все просто, для завершения используем наследование. Кратко опишем наследование. Оно заключается в том, что подкласс (производный класс) обладает всеми характеристиками родительского класса (базового класса) и в то же время имеет свои собственные характеристики. Я думаю, это должно прояснить ситуацию!
Примечание. Наследование .Net допускает наследование только непосредственно от другого класса и не может наследовать несколько классов одновременно. Кажется, что может быть только один папа (на самом деле это не абсолютно, хаха, действительно интересно подумать о Microsoft). мы по-прежнему можем использовать интерфейсы для реализации множественного наследования), но возможно и многоуровневое наследование. Например, вверху могут быть отец и дедушка, а внизу — сын и внук.
Давайте посмотрим на что-то интуитивное:
Если мы посмотрим на картинку выше, мы обнаружим, что нижние уровни более специфичны. Тогда мы сможем понять, что человек — это базовый класс (родительский класс) всех классов, а следующие — производные классы (подклассы). Фактически, наши следующие подкатегории могут быть расширены вниз.
В C# производный класс наследует члены своего прямого базового класса: методы, поля, свойства, события и индикаторы индекса. Производный класс неявно наследует все члены прямого базового класса, кроме конструкторов и деструкторов.
2. Наследование в C# подчиняется следующим правилам:
(Это не мое резюме, я зашел в Интернет и скопировал его у кого-то другого. Ха-ха!!)
1. Наследование транзитивно. Если C является производным от B, а B является производным от A, то C не только наследует члены, объявленные в B, но также наследует члены A. Класс Object служит базовым классом для всех классов.
2. Производные классы должны быть расширениями базовых классов. Производный класс может добавлять новые члены, но не может удалять определения унаследованных членов.
3. Конструкторы и деструкторы не наследуются. Кроме того, другие члены могут наследоваться независимо от определенных для них методов доступа. Способ доступа к членам базового класса может определять только то, смогут ли производные классы получить к ним доступ.
4. Если производный класс определяет новый член с тем же именем, что и унаследованный член, он может перезаписать унаследованный член. Но это не означает, что производный класс удалил эти члены, просто к этим членам больше нельзя получить доступ. (Следует отметить, что если атрибут или метод имеет то же имя, но другую сигнатуру, это не перезапись, а перегрузка.)
5. Класс может определять виртуальные методы, виртуальные атрибуты и индикаторы виртуального индекса, а также их производные. Классы могут перегружать эти члены, чтобы реализующие классы могли проявлять полиморфизм.
6. Производные классы могут наследовать только от одного класса, а множественное наследование может быть достигнуто через интерфейсы.
В подклассе мы можем получить доступ к членам базового класса через ключевое слово base:
вызвать методы базового класса, которые были переопределены другими методами.
Указывает конструктор базового класса, который следует вызывать при создании экземпляра производного класса.
Доступ к базовому классу возможен только в конструкторах, методах экземпляра или средствах доступа к свойствам экземпляра.
Использование ключевого слова base из статического метода является ошибкой.
Еще раз о модификаторах доступа
Модификаторы доступа — это ключевые слова, которые определяют доступность объявленного члена или типа. В наследовании классов есть четыре модификатора доступа: public protected, внутренний приватный. Используйте эти модификаторы доступа, чтобы указать следующие пять уровней доступности: общедоступный защищенный внутренний внутренний защищенный частный.
Заявленное значение доступности
Публичный доступ не ограничен.
защищенный доступ ограничен содержащим классом или типами, производными от содержащего класса.
Внутренний доступ ограничен текущим проектом.
защищенный внутренний Доступ ограничен текущим элементом или типом, производным от содержащего его класса.
частный доступ ограничен содержащим типом.
Давайте посмотрим на пример ниже, давайте остановимся на теме людей.
Смотрите комментарии ко всем кодам!