Сущность наследования выражается в том, что один класс, называемый подклассом (или дочерним классом), может быть создан на основе другого класса, который, в свою очередь, называется базовым (или родительским) классом. Наследование обеспечивает механизм для создания иерархий объектов. Например, собака (dog) принадлежит классу млекопитающих (mammal), а колли ( c o l l i e ) является представителем класса собак. Таким образом, класс dog наследует свойства и методы класса mammal, а класс c o l l i e , соответственно, наследует свойства и методы классов dog и mammal.
В объектно-ориентированном языке существует два типа связей между объектами иерархии — HasA (имеет) и IsA (является). Например, колли IsA собакой и HasA хвост. Реализация наследования является объектно-ориентированным свойством, поддерживающим связи типа IsA, и представляет собой еще один способ, используемый в VB.NET для поддержки полиморфизма. Функция может принимать параметр mammal, после чего объект, порожденный из класса mammal, так же как и параметр, может быть передан данной функции.
Идея об использовании существующего класса в качестве отправной точки при формировании нового класса не могла быть реализована в ранних версиях Visual Basic. И только начиная с пятой версии Visual Basic поддерживает наследование интерфейса посредством ключевого слова implements. Подобная возможность в языке программирования называется реализацией наследования (implementation inheritance). В настоящее время это одна из дополнительных возможностей VB.NET. Предыдущие версии Visual Basic были предназначены для разработки СОМ-приложений, что являлось препятствием для использования реализации наследования. Visual Basic.NET, в свою очередь, предназначен непосредственно для среды .NET Framework, в основе которой лежит эта возможность. Поддержка реализации наследования является, по всей вероятности, наиболее существенным изменением, внесенным в Visual Basic.NET. В табл. 3.1 приведены новые ключевые слова, введенные в язык вместе с новыми операторами и методами.
Public Class Person Protected c_sFirstName as String Protected c_sLastName as String MustOverride Readonly Property ClassNameO as String Get ClassName = "Person" End Get End Property NotOverridable Readonly Property BaseClassName() as String Get BaseClassName = "Person" End Get . End Property Overidable Public Property FirstNameO as String Get FirstName = c_sFirstName End Get Set(ByVal Value as string) c_sFirstName = Value End Set End Property Overidable Public Property LastNameO as String Get LastName = c_sLastName End Get Set(ByVal Value as string) c_sLastName = Value End Set End Property Overridable Sub Speak() Console.WriteLine("I am " & c_sFirstName & " " S c_sLastName) Console.WriteLine(" and I am a Person.") End Sub End Class
Этот пример иллюстрирует реализацию наследования в языке VB.NET. Языковые конструкции, согласно основным требованиям Visual Basic, должны быть просты и понятны. сравниваются некоторые ключевые слова, используемые в VB.NET для управления доступностью классов и членов класса, с их эквивалентами в языке С#. Не правда ли, ключевые слова VB.NET более понятны, чем аналогичные ключевые слова языка С#.