An object can be declared as sealed. In that case, it is not possible to declare a descendent object. The compiler will return an error if it encounters a declaration of a descendent:
Type TMyObject = object Sealed x : integer; end; TMyObject2 = object(TMyObject) Y : Integer; end; begin end.
This will result in the following error:
Error: Cannot create a descendant of the sealed class "TMyObject"
The ’class’ is not an typo, the compiler actually uses this word.
An abstract object is an object that cannot be used directly. Instead, a descendent object must always be used. However, for Delphi compatibility, the compiler ignores this directive.