Tôi đang sử dụng mã nàyTại sao tôi có thể truy cập các biến lớp riêng tư từ bên ngoài lớp học, và làm cách nào để ngăn chặn nó?
type
TSomeClass = class(TOBject)
private
class var InstanceCount : integer;
class var TotalInstanceCount : integer;
public
class function instances: integer;
class function totalInstances: integer;
constructor Create;
destructor Destroy;
end;
constructor TSomeClass.Create;
begin
inherited Create;
Inc(InstanceCount);
Inc(TotalInstanceCount);
end;
destructor TSomeClass.Destroy;
begin
Dec(InstanceCount);
inherited;
end;
class function TSomeClass.instances;
begin
Result := InstanceCount;
end;
class function TSomeClass.totalInstances;
begin
Result := TotalInstanceCount;
end;
Tôi muốn làm một quầy dụ và tôi đặt một số biến lớp học như tư nhân. Câu hỏi đặt ra là rất dễ dàng, chỉ cần nhìn vào hình ảnh này:
Như bạn có thể nhìn thấy trong hộp màu đỏ, có các biến lớp mà tôi đã khai báo là tư nhân. Tôi không muốn họ xuất hiện. Tôi chỉ muốn các hàm lớp công khai có thể hiển thị các quầy. Tôi có thể làm gì?
Lớp học này có được xác định trong cùng một đơn vị với biểu mẫu này không? –
Có. Tôi có nên đặt lớp này trong một đơn vị khác không? và sau đó trong đơn vị chính nơi tôi có mẫu nói 'Sử dụng unitwithclass' –
Không nhất thiết, mà chỉ xác nhận sự nghi ngờ của tôi. Các lớp học trong cùng một đơn vị có thể truy cập các thành viên riêng của nhau. Nếu tôi không nhầm, tôi tin rằng 'nghiêm túc tư nhân' nên làm thủ thuật cho bạn. –