Lập trình D - Giao diện
Giao diện là một cách buộc các lớp kế thừa từ nó phải triển khai các hàm hoặc biến nhất định. Các hàm không được triển khai trong một giao diện vì chúng luôn được thực hiện trong các lớp kế thừa từ giao diện.
Một giao diện được tạo bằng cách sử dụng từ khóa giao diện thay vì từ khóa lớp mặc dù hai giao diện này giống nhau về nhiều mặt. Khi bạn muốn kế thừa từ một giao diện và lớp đã kế thừa từ một lớp khác thì bạn cần phân tách tên của lớp và tên của giao diện bằng dấu phẩy.
Chúng ta hãy xem một ví dụ đơn giản giải thích việc sử dụng một giao diện.
Thí dụ
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());
}
Khi đoạn mã trên được biên dịch và thực thi, nó tạo ra kết quả sau:
Total area: 35
Giao diện với các chức năng cuối cùng và tĩnh trong D
Một giao diện có thể có phương thức cuối cùng và phương thức tĩnh mà các định nghĩa nên được bao gồm trong chính giao diện. Các hàm này không thể được ghi đè bởi lớp dẫn xuất. Một ví dụ đơn giản được hiển thị bên dưới.
Thí 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();
}
Khi đoạn mã trên được biên dịch và thực thi, nó tạo ra kết quả sau:
Total area: 35
This is a static method
This is a final method