Tôi rất bối rối với Overriding Constructors. Constructor không thể được ghi đè là kết quả những gì tôi nhận được khi tôi đã tìm kiếm nó trong google câu hỏi của tôi làOverriding Constructors
public class constructorOverridden {
public static void main(String args[]) {
Sub sub = new Sub();
sub.test();
}
}
class Super {
Super() {
System.out.println("In Super constructor");
test();
}
void test() {
System.out.println("In Super.test()");
}
}
class Sub extends Super {
Sub() {
System.out.println("In Sub constructor");
}
void test() { // overrides test() in Super
System.out.println("In Sub.test()");
}
}
khi tôi chạy này tôi đã nhận được kết quả như
In Super constructor
In Sub.test()
In Sub constructor
In Sub.test()
xin lưu ý các phương pháp thử nghiệm trong lớp được thực hiện. Nó cho thấy rằng constructor Superclass được ghi đè. Liệu nó có đúng không?
Sau đó, cách tiếp cận nào nên được sử dụng khi tránh "gọi các phương thức ghi đè trong nhà thầu"? Những gì tôi đã cố gắng thực hiện là luồng cơ bản trong một hàm tạo lớp siêu gọi phương thức trừu tượng init(), build() rồi điền(). Vì vậy, tất cả các lớp phụ phải trải qua cùng một luồng! – Akshat
@Akshat: Vâng, có vẻ như nó rơi vào danh mục "tài liệu rất rõ ràng". Thông thường có một số cách thiết kế xung quanh điều này, nhưng thật khó để đưa ra một công thức chung. –
Nếu bạn chỉ có thể cung cấp liên kết cho những cách đó, điều đó thật tuyệt vời! – Akshat