EnglishРусский  

   Приложение

Реклама

Инсталлятор CreateInstall
Бесплатные и коммерческие инсталляторы

Наследование типов

Gentee позволяет наследовать структурные типы. Для этого необходимо при описании типа указать атрибут inherit с указанием родительского типа.

type mytype <inherit = str>
{
   uint i
   uint k
}

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

type mynewtype <inherit = mytype> :

Нельзя наследовать базовые числовые типы и тип reserved. При наследовании типов у вас сохраняется возможность обращаться к полям родительских типов.

type my <inherit = mytype>
{
   str name
}
...
my m
m.i++

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

func print( mytype mt, uint i )
{
   print("MYTYPE PARAMETER = \( mt.i + i )\n")
}

func print( mytype mt )
{
   print("MYTYPE = \( mt.i )\n")
}

func print( my m )
{
   print("MY = \( m.i )\n")
}

Пусть

my mm

print( mm, 20 )
print( mm )

тогда первый вызов print выведет MYTYPE PARAMETER = 20, а второй print выведет MY = 0, а не MYTYPE = 0. Аналогичная ситуация с методами и операторами. Если необходимо вызвать именно родительский метод или функцию, то нужно привести переменную к родительскому типу. print( mm->mytype ) выведет MYTYPE = 0. Таким образом Gentee предоставляет вам такие основные возможности объектно-ориентированного программирования как наследование и полиморфизм.

Смотрите также

Редактировать