Разное
Облака / Clouds
The bast cloud service
Get 20 GB free!!!
Support WebDav.
Show more >>
time-tested cloud storage
Support WebDav.
Последние книги
Самое популярное
Все бесплатно
Все ссылки на файлы, расположенные на страницах сайта, добавлены пользователями и доступны для бесплатного скачивания. За содержание этих файлов администрация сайта ответственности не несет.
Навигация
Вопросы
Быстрое копирование файлов
Категория: Файловая система
Категория: Файловая система
Как запустить приложение, дождаться его исполнения
Категория: Приложение
Категория: Приложение
Распознавание кодировки. Перекодировка.
Категория: Текст и строки
Категория: Текст и строки
Как получить код HTM страницы зная ее URL
Категория: Интернет и Сети
Категория: Интернет и Сети
Показать удаленные записи в DBase
Категория: Базы данных
Категория: Базы данных
Удаление файла в корзину
Категория: Файловая система
Категория: Файловая система
Удалить свой же exe-шник
Категория: Приложение
Категория: Приложение
Компонент PopupMenu
Категория: Компоненты
Категория: Компоненты
Вычисление интеграла с заданной точностью алгоритмом Симпсона.
Категория: Математика
Категория: Математика
Затенение компонента определенным цветом
Категория: Компоненты
Категория: Компоненты
Delphi - Справочник: Interface
Interface
|
1. Unit Name; Interface Declarations... Implementation Declarations... end. 2. type Name = Interface{(BaseInterface,...)}; |
Ключевое слово (Unit System)
|
Используется для внешних определений модуля, и как скелет класса
|
Описание:
|
Ключевое слово Interface используется двумя различными способами. Версия 1: Он начинает определение внешнего интерфейса модуля. Здешние объявления внешне видимы другими модулями. Все эти объявления должны быть осуществлены в разделе Implementation. Раздел Uses, если он имеется, должен быть в начале. Версия 2: В Объектно-ориентированном программировании, мы часто используем методы Абстрактного класса (Abstract) в базовом классе как метка - заполнитель. Все полученные классы должны использовать эти методы. Беря этот шаг в дальнейшем, определения интерфейса группируются только по абстрактным свойствам и методам. Это обеспечивает шаблон для класса, для того чтобы использовать его в гарантированной совместимости. Это походит классу только с абстрактными методами. Это выгодно тем классам, которые основаны на одном родительском классе и использующим один или более интерфейсов. Это добавляет предсказуемости операции для каждого класса, который использует интерфейс. Для получения большей информации по этой сложной теме смотрите справку Delphi. |
Пример кода: Создание класса car от интерфейса vehicle
|
// Полный код Модуля. // ----------------------------------------------------------- // Вы должны поместить этот код в модуль с именем Unit1 и с формой // названную Form1, которая имеет событие OnCreate названное FormCreate. unit Unit1; interface uses Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms, Dialogs; type // Определение интерфейса IVehicle = Interface(IInterface) // Свойства и их функции function GetAge : Integer; function GetMiles : Integer; property age : Integer read GetAge; property miles : Integer read GetMiles; // Функция без свойств function GetValue : Currency; end; // Выполнение этого интерфейса в классе car // Обратите внимание, что TInterfaceObject определяет для нас // QueryInterface, _AddRef, _Release функции TCar = Class(TInterfacedObject, IVehicle) private fAge, fMiles : Integer; fCarType : string; function GetAge : Integer; function GetMiles : Integer; public property age : Integer read GetAge; property miles : Integer read GetMiles; property carType : string read fCarType; // Функции без свойств function GetValue : Currency; published constructor Create(age, miles : Integer; carType : string); end; // Сам класс формы TForm1 = class(TForm) procedure FormCreate(Sender: TObject); end; var Form1: TForm1; implementation {$R *.dfm} // Конструктор Car constructor TCar.Create(age, miles: Integer; carType: string); begin // Сохраняем параметры fAge := age; fMiles := miles; fCarType := carType; end; // Получение возраста автомобиля function TCar.GetAge: Integer; begin Result := fAge; end; // Получение пробега автомобиля function TCar.GetMiles: Integer; begin Result := fMiles; end; // Вычисление цены автомобиля function TCar.GetValue: Currency; begin Result := 10000.0 - ((age * miles)/10.0); end; // Основная линия кода procedure TForm1.FormCreate(Sender: TObject); var car : TCar; begin // Создание car! car := TCar.Create(1, 2076, 'Honda Jazz'); // Показ текущей цены этой машины ShowMessageFmt('Мой автомобиль %s, возраст %d г, пробег %d миль, цена %m', [car.carType, car.age, car.miles, car.GetValue]); end; end.
Результат:
|
Мой автомобиль Honda Jazz, возраст 1 г, пробег 2076 миль, цена $9,792.40 |
Примечание:
|
При выполнении интерфейса, если вы не базируете ваш класс на том, которым уже осуществили их, типа TInterfacedObject, вы должны выполнить стандартные методы интерфейса QueryInterface, _AddRef и _Release. |