Tạo một lớp ConNguoi(Lớp cha):
public class ConNguoi {
protected String hoVaTen;
protected int namSinh;
public ConNguoi(String hoVaTen, int namSinh) {
this.hoVaTen = hoVaTen;
this.namSinh = namSinh;
}
}
Anh/Chị cho em hỏi là: Nếu lớp HocSinh kế thừa lớp ConNguoi thì lớp HocSinh sẽ kế thừa các thuộc tính và phương thức của lớp ConNguoi, cụ thể ở đây là kế thừa thuộc tính hoVaTen và namSinh*=. Nhưng tại sao ở lớp HocSinh khi viết phương thức khởi tạo Constructor thì viết
this.hoVaTen = hoVaTen;
this.namsinh = namSinh;
như bên dưới thì lại không được ạ, theo như em nghĩ là nó đã kế thừa được thuộc tính của lớp cha: ConNguoi rồi thì có thể gọi các thuộc tính đó nó để sử dụng chứ:
public class HocSinh extends ConNguoi {
private String tenLop, tenTruong;
// Tạo Constructor:
public HocSinh(String hoVaTen, int namSinh, String tenLop, String tenTruong) {
this.hoVaTen = hoVaTen;
this.namsinh = namSinh;
this.tenLop = tenLop;
this.tenTruong = tenTruong;
}
}
Hoặc viết theo cách này cũng báo lỗi:
public class HocSinh extends ConNguoi {
private String tenLop, tenTruong;
// Tạo Constructor:
public HocSinh(String hoVaTen, int namSinh, String tenLop, String tenTruong) {
super.hoVaTen = hoVaTen;
super.namsinh = namSinh;
this.tenLop = tenLop;
this.tenTruong = tenTruong;
}
}
Cách viết được dạy:
public class HocSinh extends ConNguoi {
private String tenLop, tenTruong;
//Tạo Constructor:
public HocSinh(String hoVaTen, int namSinh, String tenLop, String tenTruong) {
super(hoVaTen, namSinh);
this.tenLop = tenLop;
this.tenTruong = tenTruong;
}
}
Anh/Chị có thể giải thích giúp em là tại sao viết theo 2 cách trên lại không được không ạ? Em cảm ơn
Tớ không vấn đề gì, và ủng hộ cậu khi cậu comment 1 nhận xét tích cực như vậy về Joe the Java guru trên diễn đàn bên đó, để Joe có thể đọc được
83% thành viên diễn đàn không hỏi bài tập, còn bạn thì sao?