Nó không chỉ chấp nhận được, nó thường là cần thiết cho các nhà thầu khác nhau. Ví dụ, nếu chúng ta có một (không thay đổi) lớp Rectangle
và mở rộng nó với một (không thay đổi) Square
, các nhà xây dựng Quảng trường nên (để sử dụng Java cho thời điểm này)
public Square(double size)
trong khi các nhà xây dựng của Rectangle
sẽ
public Rectangle(double width, double height)
Điều gì cần xảy ra là trình tạo lớp con phải gọi một số hàm tạo lớp con thích hợp.
Đối với các phương thức công khai bổ sung, nó có thể phụ thuộc vào việc sử dụng. Đối với trường hợp Square, tôi sẽ không thêm bất kỳ phương thức bổ sung nào. Tuy nhiên, trong Java, có một lớp con PrintWriter
của Writer
với mục đích là thêm một số phương thức tiện lợi. Trong trường hợp này tôi nghĩ rằng nó ổn (Java chắc chắn có một số ví dụ xấu nhưng tôi không nghĩ rằng đây là một trong số họ). Tôi cũng sẽ mong đợi khả năng của một số phương pháp bổ sung cho các loại container/subpart.
Điều bạn không nên làm là thay đổi phương thức siêu lớp theo cách vi phạm kỳ vọng của lớp học siêu hạng.
Nguồn
2009-06-09 17:25:49
* CHỈNH SỬA * FYI, tôi đang đề cập đến trường hợp bạn đang xây dựng một đối tượng từ một nhà máy. Tôi đang tranh luận rằng mã gọi điện, trong trường hợp của một nhà máy, nên biết những phương thức mong đợi từ các lớp dẫn xuất. –