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