Đây là đoạn mã, tôi định nghĩa hai lớp tên là Cha và Con, và tạo ra chúng trong các chức năng chính:Thứ tự của các Constructors trong Mã Java này là gì?
public class Test {
public static void main(String[] args) {
Father father = new Son();
}
}
class Father {
private String name = "father";
public Father() {
who();
tell(name);
}
public void who() {
System.out.println("this is father");
}
public void tell(String name) {
System.out.println("this is " + name);
}
}
class Son extends Father {
private String name = "son";
public Son() {
who();
tell(name);
}
public void who() {
System.out.println("this is son");
}
public void tell(String name) {
System.out.println("this is " + name);
}
}
và tôi đã nhận kết quả như thế này:
this is son
this is father
this is son
this is son
Nhưng tôi không thể hiểu điều này đã xảy ra như thế nào? Bất cứ ai cũng có thể cho tôi biết lý do tại sao?
Bài học không tìm hiểu: Không gọi các phương thức từ các nhà thầu có thể bị ghi đè. – Thilo
bài học khác để học được là bạn nên luôn cố gắng tìm ra thông báo "gỡ lỗi" không thể hiểu sai: tôi sẽ thay đổi phương thức của bạn thành một cái gì đó như 'System.out.println (" Son.who() "); ',' System.out.println ("Son.tell (" + name + ")"); ',' System.out.println ("Cha.who()"); 'và' System.out. println ("Cha.tell (" + tên + ")"); ' –