Về cơ bản, tôi có:java lớp con: nhiều nhà xây dựng được kế thừa từ lớp cha trừu tượng
public abstract class AbstractClass {
public AbstractClass(Type arg0, Type arg1, Type arg2) {
// do some stuff with all those args
}
public AbstractClass(Type onlyOneArg) {
// do different stuffs with this different arg.
}
protected someMethods() { /* ... */ }
}
Và tôi có một vài vấn đề trong các lớp con:
- Trước tiên, tôi phải -trong hầu hết các case- uselessly viết lại các hàm tạo. Không phải là rất khó chịu, chỉ cần một chút bẩn để mắt.
- Và, quan trọng hơn, tôi không bị buộc phải triển khai cả hai nhà xây dựng (mặc dù cả hai đều được sử dụng trong chương trình).
Ví dụ về các lớp con hiện tại của tôi:
public class MyClass extends AbstractClass {
public MyClass(Type arg0, Type arg1, Type arg2) {
super(arg0, arg1, arg2);
}
public MyClass(Type onlyOneArg) {
super(onlyOneArg);
}
}
Và
- Tôi có để có thể viết một số mã đặc biệt trong constructor của lớp con nếu tôi muốn.
- Tôi có quá nhiều mã được chia sẻ mà tôi muốn giữ trong lớp trừu tượng.
Tôi có thể làm gì đó không? Có điều gì tôi không biết về Java không? Hay thiết kế của tôi có xấu không? Hoặc là.. ?
Không chắc chắn câu hỏi là gì. Bạn có muốn bị buộc phải thực hiện tất cả các nhà xây dựng siêu lớp? Nó là gì về các yêu cầu bạn đã nói rằng bạn dường như không thể làm gì? –
Tôi sẽ rất vui khi cải thiện câu hỏi nhưng tôi không chắc chắn như thế nào .. Tôi có nghĩa là tôi muốn chắc chắn rằng trong mỗi lớp con 'AbstractClass', cả hai nhà xây dựng đều có sẵn. Trong chương trình, tôi đang instantiating với cả hai nhà xây dựng mà không biết chính xác loại.Tôi chỉ biết rằng đối tượng sẽ là một lớp con 'AbstractClass'. Vì vậy, tôi phải chắc chắn rằng tôi luôn có thể sử dụng cả hai nhà xây dựng. Điều đó có dễ hiểu hơn không? ... Sry, khó thể hiện suy nghĩ của tôi bằng tiếng Anh! – user978548
Bên cạnh đó, tôi cũng băn khoăn liệu có thể nào java có thể tự động sử dụng constructor 'AbstractClass' nếu nó không được định nghĩa trong phân lớp, nhưng đó không phải là mối quan tâm chính của tôi. – user978548