Constructor trong Java là gì? – Hướng Dẫn Java
Video đang hot
Định nghĩa constructor
Trong Java, constructor là một phương thức đặc biệt, nó được dùng để khởi tạo và trả về đối tượng của lớp mà nó được định nghĩa. Constructor sẽ có tên trùng với tên của lớp mà nó được định nghĩa và chúng không được định nghĩa một kiểu giá trị trả về.
Bạn đang đọc: Constructor trong Java là gì? – Hướng Dẫn Java
Ví dụ :
123456789101112 |
packagecom.huongdanjava; publicclassStudent{ privateStringname;
privateintage; publicStudent(Stringname){ this.name=name; } } |
Trong ví dụ trên, tất cả chúng ta đã định nghĩa một constructor cho đối tượng người tiêu dùng Student, như những bạn thấy nó không có kiểu giá trị trả về và tên của nó trùng tên với lớp mà nó được định nghĩa .
Khi một đối tượng được khởi tạo bằng cách gọi constructor của nó với toán tử new thì nó sẽ gọi constructor của lớp cha và tất cả các instance variable sẽ được khởi tạo với giá trị mặc định của nó. Trở lại ví dụ trên thì khi khởi tạo đối tượng Student bằng cách gọi:
12345678 |
packagecom.huongdanjava; publicclassExample{ publicstaticvoidmain(String[]args){ Studentstudent=newStudent(” Khanh “); } } |
thì giá trị của biến age trong đối tượng Student sẽ có giá trị mặc định của kiểu int là 0.
Constructor mặc định
Nếu trong một đối tượng người dùng, tất cả chúng ta không định nghĩa một constructor nào cả thì mặc định Java sẽ thêm một constructor mặc định vào đối tượng người dùng của tất cả chúng ta .
Ví dụ, mình định nghĩa đối tượng người dùng Student như sau :
1234567 |
packagecom.huongdanjava; publicclassStudent{ privateStringname; privateintage; } |
Lúc này, mình hoàn toàn có thể khởi tạo đối tượng người dùng Student bằng cách :
12345678 |
packagecom.huongdanjava; publicclassExample{ publicstaticvoidmain(String[]args){ Studentstudent=newStudent(); } } |
Rõ ràng những bạn thấy, mặc dầu mình không định nghĩa bất kể constructor nào trong đối tượng người dùng Student nhưng mình vẫn hoàn toàn có thể khởi tạo đối tượng người tiêu dùng này .
Constructor mặc định sẽ không chứa bất kể tham số nào và khi được gọi để khởi tạo đối tượng người dùng, nó cũng gọi constructor của lớp cha và khởi tạo giá trị mặc định cho những instance variable .
Trong trường hợp tất cả chúng ta đã định nghĩa một constructor cho đối tượng người dùng :
123456789101112 |
packagecom.huongdanjava; publicclassStudent{ privateStringname; privateintage; publicStudent(Stringname){ this.name=name; } } |
thì Java sẽ không tự động hóa thêm constructor mặc định nữa và khi đó nếu tất cả chúng ta cố gắng nỗ lực khởi tạo đối tượng người tiêu dùng bằng constructor mặc định thì sẽ bị lỗi compile ngay :
Định nghĩa một constructor
Chúng ta hoàn toàn có thể định nghĩa constructor cho một đối tượng người dùng bất kể, khi đó tổng thể những thuộc tính của đối tượng người dùng gồm có những phương pháp, những instance variable hoàn toàn có thể được gọi tùy theo định nghĩa của tất cả chúng ta .
Ví dụ :
1234567891011121314 |
packagecom.huongdanjava; publicclassStudent{ privateStringname; privateintage; publicStudent(Stringname){ this.name=
Xem thêm: Construction là gì? Giải nghĩa và hướng nghiệp với construction name;
age=30; } } |
Chúng ta hoàn toàn có thể sử dụng bốn access modifier để định nghĩa cho một constructor, và do vậy tất cả chúng ta hoàn toàn có thể số lượng giới hạn khoanh vùng phạm vi truy vấn của đối tượng người tiêu dùng từ những đối tượng người tiêu dùng khác .
Điều gì sẽ xảy ra nếu tất cả chúng ta định nghĩa một constructor với một kiểu giá trị trả về ? Khi đó, Java sẽ coi nó như thể một phương pháp thông thường chứ không phải là một constructor .
Ví dụ :
1234567891011121314 |
packagecom.huongdanjava; publicclassStudent{ privateStringname; privateintage; publicvoidStudent(Stringname){ this.name=name;
age=30; } } |
Đối tượng Student lúc này chỉ có một constructor mặc định do Java thêm vào mà thôi. Nếu tất cả chúng ta khởi tạo đối tượng người dùng Student với một tham số name thì sẽ bị lỗi ngay .
Overloaded constructor
Overloaded constructor là gì ? Đó là khi tất cả chúng ta định nghĩa nhiều constructor cho một đối tượng người tiêu dùng và mỗi constructor sẽ có những tham số khác nhau cả về số lượng tham số lẫn kiểu tài liệu của tham số .
Ví dụ :
123456789101112131415161718192021 |
packagecom.huongdanjava; publicclassStudent{ privateStringname; privateintage; publicStudent(intage){ this.age=age; } publicStudent(Stringname){ this.name=name; } publicStudent(Stringname,intage){ this.name=name; this.age=age; } } |
Nguyên tắc để định nghĩa overloaded constructor là :
- Các constructors, như mình đã nói, phải được định nghĩa sử dụng các tham số khác nhau cả về số lượng tham số lẫn kiểu dữ liệu của tham số.
- Các constructor không được định nghĩa chỉ khác nhau ở access modifier.
Trong trường hợp đối tượng có nhiều constructor và chúng ta muốn gọi constructor này từ constructor khác thì bắt buộc chúng ta phải sử dụng từ khóa this như sau:
123456789101112131415161718192021 |
packagecom.huongdanjava; publicclassStudent{ privateStringname; privateintage; publicStudent(intage){ this.age=age; } publicStudent(Stringname){ this.name=name; } publicStudent(Stringname,intage){ this(name); this.age=age; } } |
Câu lệnh this để gọi constructor khác này bắt buộc phải nằm ở dòng đầu tiên của constructor, nếu nó nằm sau một câu lệnh bất kỳ thì code chúng ta sẽ bị lỗi compile ngay:
Xem thêm: Big C đầu tiên tại Việt Nam mang tên là gì? – DNTT online
5/5 – ( 4 bầu chọn )
Source: https://blogthuvi.com
Category: Blog