解决方法
你有记录,对象和类.
自从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;
如果我是正确的话,对象将被引入涡轮帕斯卡5.然后他们为帕斯卡的OO提供了一种方式.他们或多或少被推荐使用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 | - | ------------------|-----------------------------|