Интерфейс — это способ заставить наследуемые классы реализовать определенные функции или переменные. Функции не должны быть реализованы в интерфейсе, потому что они всегда реализуются в классах, которые наследуются от интерфейса.
Интерфейс создается с использованием ключевого слова interface вместо ключевого слова class, хотя они во многом похожи. Если вы хотите наследовать от интерфейса, а класс уже наследует от другого класса, тогда вам нужно разделить имя класса и имя интерфейса запятой.
Давайте посмотрим на простой пример, который объясняет использование интерфейса.
пример
import std.stdio; // Base class interface Shape { public: void setWidth(int w); void setHeight(int h); } // Derived class class Rectangle: Shape { int width; int height; public: void setWidth(int w) { width = w; } void setHeight(int h) { height = h; } int getArea() { return (width * height); } } void main() { Rectangle Rect = new Rectangle(); Rect.setWidth(5); Rect.setHeight(7); // Print the area of the object. writeln("Total area: ", Rect.getArea()); }
Когда приведенный выше код компилируется и выполняется, он дает следующий результат —
Total area: 35
Интерфейс с конечными и статическими функциями в D
Интерфейс может иметь конечный и статический метод, для которого определения должны быть включены в сам интерфейс. Эти функции не могут быть переопределены производным классом. Простой пример показан ниже.
пример
import std.stdio; // Base class interface Shape { public: void setWidth(int w); void setHeight(int h); static void myfunction1() { writeln("This is a static method"); } final void myfunction2() { writeln("This is a final method"); } } // Derived class class Rectangle: Shape { int width; int height; public: void setWidth(int w) { width = w; } void setHeight(int h) { height = h; } int getArea() { return (width * height); } } void main() { Rectangle rect = new Rectangle(); rect.setWidth(5); rect.setHeight(7); // Print the area of the object. writeln("Total area: ", rect.getArea()); rect.myfunction1(); rect.myfunction2(); }
Когда приведенный выше код компилируется и выполняется, он дает следующий результат —