Определение класса может содержать спецификацию базового класса, которая определяет класс являющийся родительским для данного, а также набор интерфейсов, реализуемых классом.
class-base:
: class-type
: interface-type-list
: class-type , interface-type-list
interface-type-list:
interface-type
interface-type-list , interface-type
Если спецификация базового класса содержит определение родительского класса, то данный класс становится таковым для определяемого. В противном случае в качестве родительского класса неявно подразумевается Object.
Производный класс наследует члены родительского класса. Область видимости родительского класса должна быть как минимум не меньше, чем область видимости производного от него. Родительскими классами не могут быть следующие классы: System.Array, System.Delegate, System.MulticastDelegate, System.Enum и System.ValueType.
Базовыми классами для данного являются его родительский класса, а также все базовые для него. Другими словами, множество базовых классов для данного образуется транзитивным замыканием отношения прямого наследования.
Любой класс имеет ровно один родительский, кроме класса Object. Класс Object не имеет родительского и является базовым для всех других классов.
Когда класс B является производным от класса A, то зависимость класса A от класса B (прямая или опосредованная) приведет к ошибке компиляции.
Спецификация базового класса может содержать список интерфейсных типов. В этом случае говорится, что класс реализует данные интерфейсы. Реализация интерфейсов описана в разделе Интерфейсы: Реализация интерфейсов.
Public Interface IUserClass
Sub Test1();
Function Test2(): integer;
End Interface IUserClass;
Class A
Protected Sub Run();
Begin
//Код процедуры
End Sub;
End Class;
Class B: A, IUserClass
Public Sub Test1();
Begin
//Код процедуры
End Sub Test1;
Public Function Test2(): integer;
Var
Result: integer;
Begin
//Код функции
Return Result;
End Function Test2;
End Class;
См.также: