У вас есть записи, объекты и классы.
Записи доступны начиная с Turbo Pascal 1. Они легкие, могут иметь свойства и методы, но не поддерживают наследование. Есть некоторые проблемы с функциями, которые возвращают записи. Если у этих записей есть методы, это иногда выдает внутренние ошибки:
type
TRec = record
function Method1: Integer;
end;
function Func: TRec;
procedure Test;
var
x : TRec;
begin
Func.Method1; // Sometimes crashes the compiler
// Circumvention:
x := Func;
x.Method1; // Works
end;
Объекты вводятся с Turbo Pascal 5, если я прав. Затем они предоставили путь для ОО с паскалем. Они более или менее устарели с появлением Delphi, но вы все равно можете их использовать. Объекты могут реализовывать интерфейсы.
Классы представлены в Delphi 1 и наиболее универсальны. Они реализуют интерфейсы и поддерживают наследование. Но каждая переменная класса является скрытым указателем. Это означает, что классы должны быть созданы в куче. К счастью, этот процесс в основном скрыт.
Ниже приведена таблица с различиями между ними. Я добавил интерфейс для завершения.
|Class|Object|Record|Interface|
------------------|-----------------------------|
Are pointers? | y | n | n | y |
Inheritance | y | y | n | y |
Helpers | y | n | y | n |
Impl. Interface | y | y | n | - |
Visibility | y | y | n | n |
Method | y | y | y | y |
Fields | y | y | y | n |
Properties | y | y | y | y |
Consts | y | y | y | n |
Types | y | y | y | n |
Variants | n | n | y | n |
Virtual | y | n | y | - |
------------------|-----------------------------|