创建类时,必须将其参数分配给私有类变量,以便在该类的其他过程和函数中使用那些私有变量。这是代码密集型的,因为您必须两次定义相同的变量。
我曾尝试在同一类的过程中使用构造函数参数,但必须这样做才行得通
type
WorldObject=class
private
privX, privY, privStartSpriteNum, privEndSpriteNum:word;
privDirection, privTurn:byte;
public
constructor create(x, y, startSpriteNum, endSpriteNum:word; direction, turn:byte);
procedure draw;
constructor WorldObject.create(x, y, startSpriteNum, endSpriteNum:word; direction, turn:byte);
begin
privX:=x;
privY:=y;
privStartSpriteNum:=startSpriteNum;
privEndSpriteNum:=endSpriteNum;
privDirection:=direction;
privTurn:=turn;
end;
procedure WorldObject.draw;
begin
writeLn(privX);
writeLn(WorldObject.x);
end;
期望writeLn(WorldObject.x)打印x的值。但是出现了错误:标识符没有成员“ x”。
是否有一种方法,不必从构造函数中使用参数变量,而不必将其传递给私有变量?
谢谢!
您似乎希望有一种机制,可将构造函数的参数自动存储在某个位置,以供以后检索。没有这种机制。存储您需要在构造函数范围之外引用的所有状态是您的责任。使用类的字段是执行此操作的经典方法。