Difference between revisions of "Class/ru"

From Lazarus wiki
Jump to navigationJump to search
m (categories)
Line 5: Line 5:
 
Также классы освобождают программиста от необходимости использовать указатели и ссылки. Они автоматически обрабатываются компилятором во время компиляции.
 
Также классы освобождают программиста от необходимости использовать указатели и ссылки. Они автоматически обрабатываются компилятором во время компиляции.
  
Классы могут наследоваться от других классов или быть унаследованными в свою очередь. Любой класс, родительский класс которого не уточнен программистом,  автоматически наследуется от TObject, так как он имеет необходимые компоненты для всех классов. Из-за зависимости TObject, в деструкторе любой подкласс должен иметь директиву override. Кроме того, любой из конструкторов вашего класса должен иметь в совем теле оператор inherited. Класс может иметь несколько конструкторов, но только один деструктор.
+
Классы могут наследоваться от других классов или быть унаследованными в свою очередь. Любой класс, родительский класс которого не уточнен программистом,  автоматически наследуется от TObject, так как он имеет необходимые компоненты для всех классов. Из-за зависимости TObject, в деструкторе любой подкласс должен иметь директиву override. Кроме того, любой из конструкторов вашего класса должен иметь в своем теле оператор inherited. Класс может иметь несколько конструкторов, но только один деструктор.
  
 +
Object Pascal не поддерживает множественное наследование: кроме неявного наследования от TObject классы могут иметь только один родительский класс. Полиморфизм реализован с помощью директив методов. Ниже представлен пример простого объявления класса; давайте разберем его.
  
{{AutoCategory}}
+
<syntaxhighlight>
[[Category:Data types/ru]]
+
type
 +
  TMyClass = class
 +
  private
 +
    FSomeVar: integer;
 +
  public
 +
    constructor Create; overload;
 +
    constructor Create(Args: array of integer); overload;
 +
    destructor Destroy; override;
 +
    function GetSomeVar: integer;
 +
    procedure SetSomeVar(newvalue: integer);
 +
  published
 +
    property SomeVar: integer read GetSomeVar write SetSomeVar default 0;
 +
  end;
 +
</syntaxhighlight>
 +
 
 +
Между [[Keyword/ru|ключевыми словами]] '''class''' и '''end''' мы видим объявления членов - переменных и методов. Некоторым методам (функциям и/или процедурам) предшествуют модификаторы области видимости ('''private''', '''public''', '''published'''), за ними следуют директивы ('''overload''', '''override'''), а также ''странная штука'' под названием '''property'''. Давайте разберем их все.
 +
 
 +
 
 +
{{Data types/ru}}

Revision as of 22:21, 6 February 2018

Deutsch (de) English (en) français (fr) русский (ru)

Класс является хорошо структурированным типом данных в Object Pascal и его диалектах (таких, как Delphi или ObjFPC). Классы могут содержать переменные, конструкторы, деструкторы, функции, процедуры и свойства.

Также классы освобождают программиста от необходимости использовать указатели и ссылки. Они автоматически обрабатываются компилятором во время компиляции.

Классы могут наследоваться от других классов или быть унаследованными в свою очередь. Любой класс, родительский класс которого не уточнен программистом, автоматически наследуется от TObject, так как он имеет необходимые компоненты для всех классов. Из-за зависимости TObject, в деструкторе любой подкласс должен иметь директиву override. Кроме того, любой из конструкторов вашего класса должен иметь в своем теле оператор inherited. Класс может иметь несколько конструкторов, но только один деструктор.

Object Pascal не поддерживает множественное наследование: кроме неявного наследования от TObject классы могут иметь только один родительский класс. Полиморфизм реализован с помощью директив методов. Ниже представлен пример простого объявления класса; давайте разберем его.

type
  TMyClass = class
  private
    FSomeVar: integer;
  public
    constructor Create; overload;
    constructor Create(Args: array of integer); overload;
    destructor Destroy; override;
    function GetSomeVar: integer;
    procedure SetSomeVar(newvalue: integer);
  published
    property SomeVar: integer read GetSomeVar write SetSomeVar default 0;
  end;

Между ключевыми словами class и end мы видим объявления членов - переменных и методов. Некоторым методам (функциям и/или процедурам) предшествуют модификаторы области видимости (private, public, published), за ними следуют директивы (overload, override), а также странная штука под названием property. Давайте разберем их все.


Типы данных
Простые типы Boolean | Byte | Cardinal | Char | Currency | Extended | Int64 | Integer | Longint | Pointer | Real | Shortint | Smallint | Word
Сложные типы Array | Class | Record | Set | String | Shortstring