Книга: C# для профессионалов. Том II
Определение класса: наследование
Определение класса: наследование
Теперь мы переходим к определению класса SquareRootForm
. Само определение достаточно простое:
public class SquareRootForm : System.Windows.Forms.Form {
Ключевое слово class сообщает компилятору, что будет определен класс. Интерес в данном случае представляет двоеточие после имени класса, за которым следует другое имя — Form
. Это момент, где мы вводим упоминавшуюся ранее важную концепцию, которую необходимо знать, чтобы понимать программирование на C#,— наследование
Приведенный выше синтаксис сообщает компилятору, что класс SquareRootForm
наследуется из класса Form
(в действительности из Windows.Forms.Form
). Это означает, что класс получает не только все методы, свойства и т.д., которые мы определяем, он получает все, что было в классе Form
. Form
является очень мощным базовым классом .NET, который предоставляет все свойства базовой формы. Он содержит методы, позволяющие форме выводиться, и большое количество свойств, включая Height
, Width
, Desktop Location
, BackColor
(фоновый цвет формы), которые управляют внешним видом формы на экране. Наследуя от этого класса, наш собственный класс сразу получает все эти свойства и является поэтому полноценной формой. Класс, от которого наследуют, называется базовым классом, а новый класс называют производным классом.
Если вы знакомы с интерфейсами, то наследование не должно быть для вас новым понятием, так как интерфейсы могут наследоваться друг из друга. Однако здесь имеется значительно более мощная конструкция, чем наследование интерфейсов. Когда интерфейс COM наследуется из другого интерфейса, он получает только имена и сигнатуры методов и свойства. Это, в конце концов, все, что содержит интерфейс. Однако класс содержит весь код, который реализует эти методы, и тому подобное также, как в VB делает объект класса. Это означает, что SquareRootForm
получает все реализации из класса Form
, а также имена методов. Этот вид наследования называется наследованием реализации, он не является новинкой в C#: это была фундаментальная концепция классического объектно-ориентированного программирования (OOP), которой пользовались в течение десятилетий. Программы C++, в частности, обычно работают на основе этой концепции, но она не поддерживается VB. (Наследование реализации имеет сходство с созданием подклассов.) При разработке программ на C# можно обнаружить, что вся архитектура типичной программы C# почти всегда основывается на наследовании реализации.
Но наследование реализации является еще более мощным средством. Как будет показано позже, когда класс наследуется из другого класса, он не обязан брать все реализации в базовом классе. При желании можно изменить реализации определенных методов и свойств с помощью технологии, называемой переопределением. Это означает, что можно создать класс, который очень похож на существующий, но имеет некоторые отличия в том. как и что он делает. Это существенно облегчает повторное использование кода, написанного другими людьми, сберегая тем самым время разработки. Также важно понять, что не требуется доступ к исходному коду базового класса, чтобы наследовать из него. По очевидным коммерческим соображениям компания Microsoft сохраняет исходный код класса Form для себя. Тот факт, что компилированная библиотека доступна в форме сборки, является достаточным, чтобы можно было наследовать от этого класса, используя требуемые методы и переопределяя методы, которые не нужны.
- ГЛАВА 11 Наследование
- Переопределение (redefinition)
- Наследование
- Определение класса
- Переопределение методов
- 3.4. Отношения между классами
- 1.2. Определение количества информации. Единицы измерения количества информации
- Определение версии клиента
- Определение пользовательского формата числовых данных
- Определение целей. Построение цепочек
- Определение необходимого системного вызова
- Раздел 1 Лояльность: определение и ключевые факторы