Kiểu ghép struct
không thể thừa kế từ kiểu ghép khác.
Nhưng với các kiểu ghép, D có một cách khác để mở rộng khả năng của nó
bằng cách định kiểu (thay) thế (subtyping
).
Bên trong kiểu ghép bạn có thể định nghĩa một trong các thành phần của
nó bằng alias this
:
struct SafeInt {
private int theInt;
alias theInt this;
}
Sau đó, bất kỳ hàm hay toán tử nào trên đối tượng kiểu SafeInt
mà không được định nghĩa bởi kiểu ghép SafeInt
thì sẽ được chuyển tiếp
qua thành phần alias this
, mà trong ví dụ trên, là chuyển qua đối tượng
kiểu theInt
. Theo đó, các truy cập từ bên ngoài tới đối tượng SafeInt
vẫn như với số nguyên bình thường.
Cách định kiểu thế cho phép mở rộng kiểu ghép mà không phải hao tốn thêm
tài nguyên bộ nhớ lúc chạy chương trình. Trình biên dịch sẽ đảm bảo tính
đúng đắn khi truy cập thành phần alias this
.
alias this
cũng có thể dùng với lớp (class
).