Trong một chương trình Java, tôi có nhiều lớp con kế thừa từ một phụ huynh (trừu tượng). Tôi muốn thể hiện rằng mỗi đứa trẻ nên có một thành viên được đặt một lần duy nhất (mà tôi đã định làm từ nhà xây dựng). Kế hoạch của tôi là viết mã s.th. như thế này:Trong Java, tại sao tôi không thể khai báo thành viên cuối cùng (w/o khởi tạo nó) trong lớp cha và đặt giá trị của nó trong lớp con? Làm thế nào tôi có thể làm việc xung quanh?
public abstract class Parent {
protected final String birthmark;
}
public class Child extends Parent {
public Child(String s) {
this.birthmark = s;
}
}
Tuy nhiên, điều này dường như không làm hài lòng các vị thần Java. Trong lớp cha, tôi nhận được thông báo rằng birthmark
"có thể chưa được khởi tạo", trong lớp con tôi nhận được "Trường cuối cùng birthmark
không thể truy cập được".
Vậy cách Java là gì? Tôi đang thiếu gì?
Không phải là câu trả lời trực tiếp, nhưng trong các trường mẫu cuối cùng định dạng tệp lớp chỉ có thể được đặt bởi cùng một tệp lớp nhưng không nhất thiết phải trong hàm tạo. IIRC. –
Câu hỏi liên quan: http://stackoverflow.com/questions/14383276/initialize-member-of-abstract-class-without-subclasses-having-write-access – user905686