[Overview][Constants][Types][Classes][Procedures and functions][Variables][Index] | Reference for unit 'Classes' (#rtl)

# TPersistent

[Properties (by Name)] [Methods (by Name)] [Events (by Name)]

Base class for streaming system and persistent properties.

## Declaration

Source position: classesh.inc line 429

`type TPersistent = class(TObject, IFPObserved)`
`public`
`destructor Destroy; override;` |  | Destroys the TPersistent instance.
`procedure Assign(); virtual;` |  | Assign the contents of one class to another.
`procedure FPOAttachObserver();` |  | Add an observer to the list of observers.
`procedure FPODetachObserver();` |  | Remove an observer from the list of observers
`procedure FPONotifyObservers();` |  | Notify observers of changes.
`function GetNamePath; virtual;` |  | Returns a string that can be used to identify the class instance.
`end;`

## Inheritance

`TPersistent,IFPObserved` |  | Base class for streaming system and persistent properties.
`TObject` |  | Base class of all classes.

## Description

TPersistent is the basic class for the streaming system. Since it is compiled in the {$M+} state, the compiler generates RTTI (Run-Time Type Information) for it and all classes that descend from it. This information can be used to stream all properties of classes.

It also introduces functionality to assign the contents of 2 classes to each other.

TPersistent implements the IFPObserved interface for the benefit of descendant classes, but does not call IFPObserved.FPONotifyObservers. Descendants such as TStrings and TCollection and TCollectionItem do use it.

## See also

TComponent |  | Base class for all components that need owner-owned functionality.
IFPObserved |  | Interface implemented by an object that can be observed.
TStrings |  | Class to manage arrays or collections of strings
TCollection |  | Base class to manage collections of named objects.
TCollectionItem |  | Basic object that is managed by a TCollection class.