- Код: Выделить всё
program Project1;
{$mode objfpc}{$H+}
{$interfaces CORBA}
uses
{$IFDEF UNIX}{$IFDEF UseCThreads}
cthreads,
{$ENDIF}{$ENDIF}
Classes, Unit1
{ you can add units after this };
{$R *.res}
Var
aMyClass: TMyClass;
begin
aMyClass := TMyExtClass.Create;
(aMyClass As IMyInterface).Unhiden;
end.
Где Unit1:
- Код: Выделить всё
Unit Unit1;
{$mode objfpc}{$H+}
{$interfaces CORBA}
Interface
Uses
Classes, SysUtils;
Type TMyClass = Class
Private
Public
End;
Type IMyInterface = Interface
Procedure Unhiden;
End;
Type
{ TMyExtClass }
TMyExtClass = Class(TMyClass, IMyInterface)
Private
Procedure Unhiden;
Public
End;
Implementation
{ TMyExtClass }
Procedure TMyExtClass.Unhiden;
Begin
WriteLn('!');
End;
End.
Результат:
/tmp/project1 писал(а):!
Налицо обращение к приватному методу, даже если все объявления всех классов и интерфейсов раскиданы по разным модулям ^_^ Насколько это нормально? ^_^