2015-10-26 4 views
2

В Delphi: В чем разница между конструктором и функцией класса для создания объекта?В чем разница между конструктором и функцией класса

TPersonnel = class(TPersistent) 
public 
    class function Create: TPersonnel; overload; 
    constructor Create(APersonelID: integer); overload; 
end; 

class function TPersonnel.Create: TPersonnel; 
begin 
    result := inherited Create; 
end; 

constructor TPersonnel.Create(APersonelID: integer); 
begin 
    inherited Create; 
end; 

Я знаю, что функция класса Create скроет конструктор по умолчанию.

Независимо конструктор Создать параметр

Есть ли причина, по которой я должен использовать конструктор?

ответ

6

Есть ли причина, по которой я должен использовать конструктор?

Проще говоря, только конструктор может создать экземпляр нового экземпляра. Функция класса не способна создать новый экземпляр.

Для функции класса, которая возвращает новый экземпляр, должен в конечном счете вызвать конструктор, чтобы создать экземпляр нового экземпляра. И если вы хотите написать код, который выполняется при создании экземпляра, который должен быть помещен в конструктор.

В классе функции вашего кода

class function TPersonnel.Create: TPersonnel; 
begin 
    Result := inherited Create; 
end; 

вы вызываете унаследованный конструктор без параметров.

+0

В моем примере функция класса «Создать» и «Конструктор». У обоих есть одна и та же задача. – Mohamad

+1

@Mohamad: Да, но в вашей функции класса вы вызываете конструктор (TPersistent), поэтому в обоих случаях конструктор используется для создания экземпляра класса ... – HeartWare

+0

@Mohamad Только конструктор может создать экземпляр нового экземпляра. –

Смежные вопросы