1) Типы внутри типов использовать МОЖНО., естественно, обьявить новый тип в теле другого типа никто вам не даст. А вот такая запись вполне допустима :
Type TCar
Field _pos:Float
Method Update()
Type TTire
field _x:Float
Method Update()
...
EndMethod
EndType
EndMethod
EndType
Тип TTire - временный, или по другому статичный.
2) Насчет статичных функций. Всегда считал, что с приходом методов они стали атавизмом. Ну нету таким функциям рационального использования и все тут! Единственное что они привносят - так это путаницу, и нечитабельность кода. Более того они не являются частью ООП. Многие новички любят делать такими функциями конструкторы и деструкторы, но вот только с точки зрения ООП - это все равно, что загнать себя в угол и кричать потом от безисходности и нечитабельности кода. Да и еще, статичные функци начинают "по настоящему" мешать, если речь идет о развитии и поддержке кода, так как они убивают само понятие "наследования" читай ООП.
3) Отсюда вывод -> Никаких функций в типах. Конструкторы и деструкторы можно легко сделать на методах.
Type TVector
Field x:Float
Field y:Float
Method New() ' Дефолтный конструктор
x=0 ; y=0
EndMethod
Method Create:TVector(x:Float = 0.0, y:Float = 0.0) ' Расширенный конструктор
Self.x=x ; Self.y=y
Return Self
EndMethod
Method Delete() ' Деструктор для GC
Free()
EndMethod
Method Free() ' Принудительный деструктор
x=Null ; y=Null
EndMethod
EndType
Юзаем так :
Local v0:TVector = New TVector ' x=0 ; y=0
Local v1:TVector = New TVector.Create(10.0,15.0) ' x=10.0 ; y=15.0
v0 = Null ' Delete()
v1.Free()
v1 = Null
4) Как всем известно если вы в потомке обьявляете одноименный метод предка, то метод потомка заместит метод предка, а метод предка станет доступным через кейворд 'Super'. - В той же мере это относится и к полям, они тоже перекрываются и поля предка доступны через это же слово. Пример :
Type TParent
Field _value:String = "Parent field!"
EndType
Type TChild Extends TParent
Field _value:Int = 100
Method Test()
DebugLog(Super._value)
DebugLog(String(_value))
EndMethod
EndType
Догадайтесь с трех раз, что выведется на консоль?!
ЗЫ : Хотя, некоторые БМаксеры считают это небезопасным маневром в плане уборки мусора.
ПРАВКА : Насчет полей я был не прав. Их можно только переопределить.