vấn đề ông bà của là thế này: Tôi có một lớp trừu tượng mà hiện một số công việc trong constructor của nó, và một tập các lớp con mà thực hiện các lớp trừu tượng:Nhảy qua constructor mẹ gọi
class AbstractClass {
AbstractClass(){ /* useful implementation */ }
}
class ConcreteClass1 extends AbstractClass {
ConcreteClass1(){ super(); /* useful implementation */ }
}
Sau đó, lớp bê tông cần phải được tùy chỉnh và một giải pháp là để mở rộng các lớp bê tông:
class CustomizedClass1 extends ConcreteClass1 {
CustomizedCLass1(){ super(); /* useful implementation */ }
}
NHƯNG vấn đề là các lớp tùy chỉnh chỉ cần gọi constructor lớp trừu tượng và không constructor lớp bê tông của.
Làm thế nào để bạn đạt được điều này? Gợi ý thay đổi mối quan hệ của lớp là hợp lệ.
EDIT: Ví dụ cụ thể là ConcreteClass1 và CustomizedClass1 có các bộ dữ liệu khác nhau (ConcreteData1 và CustomizedData1) và được lấy từ cơ sở dữ liệu trong hàm tạo của lớp. Vấn đề là việc tạo một cá thể của CustomizedClass1 sẽ lấy ra cả hai thực thể dữ liệu.
Tôi biết rằng việc sử dụng thừa kế đơn giản có lẽ không phải là điều tốt nhất để làm, đó là lý do tại sao tôi chỉ ra rằng các đề xuất thay đổi mối quan hệ của lớp là hợp lệ.
Nếu bạn không gọi hàm tạo 'ConcreteClass1', nó không phải là' ConcreteClass1'. –
Một số câu trả lời cho thấy một số thủ thuật để làm điều này nhưng điều này rất không tự nhiên trong Java và OO. Các câu trả lời hay nhất sẽ thách thức thiết kế đối tượng của bạn và khuyến khích bạn suy nghĩ về các mối quan hệ A-A và A có. –
Nhưng tốc độ phát triển đôi khi có thể có vấn đề, phải không? – mlvljr