|
Вопрос # 422/ вопрос открыт / |
|
Здравствуйте! Недавно дописывал класс и наткнулся на возможность использовать класс как список. Для удобства я прописал классу метод Assign. Теперь вопрос, почему в методе Assign допустима такая запись:
procedure TLine.Assign(Line: TLine);
begin
Self.FColor := Line.FColor; //???
...
Ведь поле FColor определено в секции private!, которая не должна быть доступна из вне класса.
Приложение: Переключить в обычный режим- ...
- type
- TLine = class
- private
- FPredIndex: longword;
- FCount: longword;
- FColor: TColor;
- FVisibleLine: boolean;
- FRePaint: TRePaint;
- FReMove: TReMove;
- FMagnet: word;
- FPointSize: word;
- FSmooth: word;
- FJoin: boolean;
- FNumbers: boolean;
- FTag: integer;
- FStyle: TPenStyle;
- FWidth: integer;
- FLine: TLine;
- FClosed: boolean;
- FLineRoot: Tline;
- ...
- protected
- //
- public
- procedure Assign(Line: TLine);
- ...
- end;
- ...
- procedure TLine.Assign(Line: TLine);
- begin
- Self.FColor := Line.FColor;
- Self.FVisibleLine := Line.FVisibleLine;
- Self.FRePaint := Line.FRePaint;
- Self.FReMove := Line.FReMove;
- Self.FMagnet := Line.FMagnet;
- Self.FPointSize := Line.FPointSize;
- Self.FSmooth := Line.FSmooth;
- Self.FJoin := Line.FJoin;
- Self.FNumbers := Line.FNumbers;
- Self.FStyle := Line.FStyle;
- Self.FWidth := Line.FWidth;
- Self.FLineRoot := Line.FLineRoot;
- end;
- ...
 |
Вопрос задал: SMaks (статус: 1-ый класс)
Вопрос отправлен: 22 марта 2007, 21:59
Состояние вопроса: открыт, ответов: 2.
|
Ответ #1. Отвечает эксперт: Матвеев Игорь Владимирович
Здравствуйте, SMaks!
Потому что все типы классов, и private в том числе, доступны из того модуля, где этот класс описан. В доругом модуле, если вы подключите к нему этот, private методы будут закрыты.
Ответ #2. Отвечает эксперт: min@y™
Секция private конечно доступна в методе СВОЕГО КЛАССА, ёмаё!
procedure TLine.Assign(Line: TLine);
Ну ты даёшь!
 |
Ответ отправил: min@y™ (статус: Доктор наук)
Время отправки: 23 марта 2007, 08:24
Оценка за ответ: 4
Комментарий к оценке: Вот именно своего, я же беру не свой класс ..Line: TLine.., точнее он должен быть закрытым для меня, но чудеса, я могу получать на прямую его поля из секции private, но только из методов этого же класса.
|
Мини-форум вопроса
Всего сообщений: 1; последнее сообщение — 22 марта 2007, 23:12; участников в обсуждении: 1.
Чтобы оставлять сообщения в мини-форумах, Вы должны авторизироваться на сайте.
|