D забезпечує підтримку класів та інтерфейсів, як Java чи C++.
Будь який class
неявно успадковується від Object
.
class Foo { } // успадковується від Object
class Bar : Foo { } // Bar є також Foo
Класи у D, як правило, створюються у купі, за допомогою виразу new
:
auto bar = new Bar;
Об'єкти класу завжди є посиланням, і на відміну від struct
, не
копіюються за значенням.
Bar bar = foo; // bar посилається на foo
Збирач сміття звiльняє пам'ять об'єкту лише тодi, коли впевниться, що ніякіх посилань на об'єкт більше не існує.
Щоб вказати на те, що функція базового класу була перевизначеною,
потрібно використати ключове слово override
. Це дозволяє нам
запобігти ненавмисному перевизначенню функцій.
class Bar : Foo {
override functionFromFoo() {}
}
У D класи можуть успадковуватись тільки від одного класу.
final
у
базовому класі
abstract
, щоб змусити перевизначити її
abstract
, щоб переконатися у тому,
що жодного екземпляру класу не буде створено
super