В об'єктно-орієнтованому програмуванні конструктор класу (від англ. constructor, деколи скорочують ctor) — спеціальний метод класу, який автоматично викликається при створенні об'єкта.
Призначення
Призначення конструктора — встановити початковий стан об'єкта шляхом ініціалізації атрибутів об'єкта та визначити інваріант класу.
В більшості мов програмування конструктор схожий з іншими методами, але відрізняється тим, що не має явним чином визначеного типу даних, що повертаються, не успадковується і, здебільшого, має різні правила для модифікаторів. Конструктори часто виділяються тим, що мають однакове ім'я з іменем класу, в якому їх оголошено.
В більшості мов програмування конструктор може бути перевантаженим, що дозволяє використовувати кілька конструкторів в одному класі. Деякі мови розрізняють кілька особливих типів конструкторів[]:
- Конструктор за умовчанням — конструктор, що не приймає аргументів, або всі аргументи якого мають значення за умовчанням.
- Конструктор копіювання — конструктор, що приймає як аргумент об'єкт того ж класу, або посилання на нього.
Види конструкторів
class Complex { public: // Типовий конструктор Complex(double i_re = 0, double i_im = 0) : re(i_re), im(i_im) {} // Конструктор копіювання Complex(const Complex &obj) { re = obj.re; im = obj.im; } private: double re, im; };
Синтаксис
С++
Ім'я конструктора в С++ повинно збігатися з ім'ям класу. Допускається використовувати кілька конструкторів з однаковим ім'ям, але з різними параметрами.
class ClassWithConstructor { public: /* Ініціалізація внутрішнього об'єкта за допомогою конструктора */ ClassWithConstructor(float parameter): object(parameter) {} /* виклик конструктора AnotherClass(float); */ private: AnotherClass object; };
Python
В мові Python конструктором є метод класу з ім'ям __init__ . Крім того потрібно не забувати, що першим аргументом будь-якого методу класу повинен бути вказівник на контекст класу self.
class ClassWithConstructor: def __init__(self): """This method is constructor.""" pass
Delphi
В Delphi, на відміну від , для оголошення конструктора служить ключове слово constructor
. Ім'я конструктора може бути будь-яким, але рекомендується вживати назву Create
.
TClassWithConstructor = class public constructor Create; end;
Деякі відмінності між конструкторами та іншими методами Java:
- Конструктори не можуть напряму викликатись з інших методів (необхідно використовувати ключове слово
new
) - Конструктори можуть викликатись з інших конструкторів того ж класу, або з конструкторів класів, що є його прямими нащадками (в першому випадку вживається конструкція
this(arg1, arg2...)
, в другому —super(arg1, arg2...)
і цей виклик має бути першою інструкцією в конструкторі, що робить виклик). - Конструктори не можуть мати тип synchronized, final, abstract, native або static.
- Конструктори завжди виконуються в тому ж потоці.
public class Example { // Типовий конструктор public Example() { this(1); } // Перевантаження конструктора public Example(int input) { data = input; } private int data; }
// код, який ілюструє створення об'єкта конструктором Example e = new Example(42);
class myClass { private int mA; private string mB; public myClass(int a, string b) { mA = a; mB = b; } }
myClass c = new myClass(42, "string");
В PHP (починаючи з версії 5) конструктор — це метод __construct()
, який автоматично викликається ключовим словом new
після створення об'єкта. Переважно використовується для виконання різних ініціалізацій.
class Person { private $name; function __construct($name) { $this->name = $name; } function getName() { return $this->name; } }
Тим не менше, конструктор в РНР версії 4 - метод класу з ім'ям цього ж класу
class Person { private $name; function Person($name) { $this->name = $name; } function getName() { return $this->name; } }
Посилання
- Гради Буч. Объектно-ориентированный анализ и проектирование // Классы и объекты [ 1 грудня 2009 у Wayback Machine.]
Див. також
Це незавершена стаття про мови програмування. Ви можете проєкту, виправивши або дописавши її. |
Вікіпедія, Українська, Україна, книга, книги, бібліотека, стаття, читати, завантажити, безкоштовно, безкоштовно завантажити, mp3, відео, mp4, 3gp, jpg, jpeg, gif, png, малюнок, музика, пісня, фільм, книга, гра, ігри, мобільний, телефон, android, ios, apple, мобільний телефон, samsung, iphone, xiomi, xiaomi, redmi, honor, oppo, nokia, sonya, mi, ПК, web, Інтернет
V ob yektno oriyentovanomu programuvanni konstruktor klasu vid angl constructor dekoli skorochuyut ctor specialnij metod klasu yakij avtomatichno viklikayetsya pri stvorenni ob yekta PriznachennyaPriznachennya konstruktora vstanoviti pochatkovij stan ob yekta shlyahom inicializaciyi atributiv ob yekta ta viznachiti invariant klasu V bilshosti mov programuvannya konstruktor shozhij z inshimi metodami ale vidriznyayetsya tim sho ne maye yavnim chinom viznachenogo tipu danih sho povertayutsya ne uspadkovuyetsya i zdebilshogo maye rizni pravila dlya modifikatoriv Konstruktori chasto vidilyayutsya tim sho mayut odnakove im ya z imenem klasu v yakomu yih ogolosheno V bilshosti mov programuvannya konstruktor mozhe buti perevantazhenim sho dozvolyaye vikoristovuvati kilka konstruktoriv v odnomu klasi Deyaki movi rozriznyayut kilka osoblivih tipiv konstruktoriv dzherelo Konstruktor za umovchannyam konstruktor sho ne prijmaye argumentiv abo vsi argumenti yakogo mayut znachennya za umovchannyam Konstruktor kopiyuvannya konstruktor sho prijmaye yak argument ob yekt togo zh klasu abo posilannya na nogo Vidi konstruktorivclass Complex public Tipovij konstruktor Complex double i re 0 double i im 0 re i re im i im Konstruktor kopiyuvannya Complex const Complex amp obj re obj re im obj im private double re im SintaksisS Im ya konstruktora v S povinno zbigatisya z im yam klasu Dopuskayetsya vikoristovuvati kilka konstruktoriv z odnakovim im yam ale z riznimi parametrami class ClassWithConstructor public Inicializaciya vnutrishnogo ob yekta za dopomogoyu konstruktora ClassWithConstructor float parameter object parameter viklik konstruktora AnotherClass float private AnotherClass object Python V movi Python konstruktorom ye metod klasu z im yam init Krim togo potribno ne zabuvati sho pershim argumentom bud yakogo metodu klasu povinen buti vkazivnik na kontekst klasu self class ClassWithConstructor def init self This method is constructor pass Delphi V Delphi na vidminu vid C dlya ogoloshennya konstruktora sluzhit klyuchove slovo constructor Im ya konstruktora mozhe buti bud yakim ale rekomenduyetsya vzhivati nazvu Create TClassWithConstructor class public constructor Create end Java Deyaki vidminnosti mizh konstruktorami ta inshimi metodami Java Konstruktori ne mozhut napryamu viklikatis z inshih metodiv neobhidno vikoristovuvati klyuchove slovonew Konstruktori mozhut viklikatis z inshih konstruktoriv togo zh klasu abo z konstruktoriv klasiv sho ye jogo pryamimi nashadkami v pershomu vipadku vzhivayetsya konstrukciya this arg1 arg2 v drugomu super arg1 arg2 i cej viklik maye buti pershoyu instrukciyeyu v konstruktori sho robit viklik Konstruktori ne mozhut mati tip synchronized final abstract native abo static Konstruktori zavzhdi vikonuyutsya v tomu zh potoci public class Example Tipovij konstruktor public Example this 1 Perevantazhennya konstruktora public Example int input data input private int data kod yakij ilyustruye stvorennya ob yekta konstruktorom Example e new Example 42 C class myClass private int mA private string mB public myClass int a string b mA a mB b myClass c new myClass 42 string PHP V PHP pochinayuchi z versiyi 5 konstruktor ce metod construct yakij avtomatichno viklikayetsya klyuchovim slovom new pislya stvorennya ob yekta Perevazhno vikoristovuyetsya dlya vikonannya riznih inicializacij class Person private name function construct name this gt name name function getName return this gt name Tim ne menshe konstruktor v RNR versiyi 4 metod klasu z im yam cogo zh klasu class Person private name function Person name this gt name name function getName return this gt name PosilannyaGradi Buch Obektno orientirovannyj analiz i proektirovanie Klassy i obekty 1 grudnya 2009 u Wayback Machine Div takozhDestruktor programuvannya Zamina konstruktora fabrichnim metodom Ce nezavershena stattya pro movi programuvannya Vi mozhete dopomogti proyektu vipravivshi abo dopisavshi yiyi