Bạn bảo dùng từ khoá new để gọi hàm dựng là chưa đúng, không có sách nào viết dùng từ khóa new để gọi method constructor cả. new dùng để cấp phát vùng cho cho object là bước 1. Đến bước thứ 3 theo thứ tự bên trên mới đến lượt constructor thực thi. Mà nó lại tự động thực thi chứ không cần thao tác lời gọi hàm nào cả. Constructor giống như side effect vậy đó. VD bạn tạo class Person có thuộc tính tuổi age, bạn new Person() thì lúc này age vẫn là 0, sau đó constructor tự động execute để set lại giá trị age.
Bạn đang hiểu là viết toán tử new để gọi constructor như kiểu object.method()
Còn mục đích thì như 3 bước bên trên. 3 bước này tự động diễn ra trong môi trường runtime mỗi khi có từ khoá new.
- new chỉ có 1 mục đích duy nhất là tạo một ô nhớ trong bộ nhớ heap thôi. Sau bước 1 thì tất cả thuộc tính đều là default value vd int là 0 string là null
- vd trong java bạn viết private int age = 18; thì đây là bước 2.
- còn contructor logic như method thông thường chỉ khác ở 3 điểm là nó tự động execute sau khi bước 1, 2 xong và không có kiểu trả về và cùng tên với class
Bạn cũng không thể trực tiếp gọi constructor, vì vậy bạn nói “tôi dùng new để gọi hàm dựng” là sai