Chào mọi người, đây là topic đầu tiên của mình, mong mọi người đừng gạch đá quá nhiều.
Mình vừa mới bắt đầu học lập trình java, đang học đến phần thừa kế. Trường hợp của mình như sau:
-
Tạo một lớp cha (tên là “Super”), trong lớp Super có một thuộc tính là name, kiểu String, giá trị mặc định là “default” : “public String name = “default”;”
-
Trong lớp Super cũng tạo một constructor (hàm khởi tạo) không tham số, “public Super(){name = “Hello”;}” .Trong hàm khởi tạo này mình xét giá trị cho thuộc tính name là “Hello”.
-
Tạo một lớp con (tên là “Sub”), thừa kế từ lớp cha “extends Super”, trong lớp Sub này tạo một constructor mới, “public Sub(){}” và để nội dung hàm trống.
-
Trong hàm main, khi mình tạo một đối tượng kiểu Sub: “Sub obj1 = new Sub();” thì khi mình in giá trị của thuộc tính name ra, thì trả về là “Hello” chứ không phải là “default”.
Mình thắc mắc là mình không hề gọi hàm khởi tạo của lớp cha, vậy tại sao hàm này vẫn được gọi và xét giá trị “Hello” cho biến name ???
83% thành viên diễn đàn không hỏi bài tập, còn bạn thì sao?