Đối với những Developer mới vào nghề hẳn nhiều người thắc mắc về vấn đề Constructor như Constructor là gì? Quy tắc nào tạo nên Constructor Java? hay Constructor trong Java có những kiểu nào? Hiểu đơn giản thì Constructor như một kiểu phương thức đặc biệt được sử dụng để thực hiện khởi tạo cho đối tượng. Tuy nhiên để hiểu sâu hơn cũng như giải đáp được những thắc mắc trên thì hãy cùng FPT Aptech theo dõi bài viết dưới đây nhé!

Constructor là gì?

Trong Java, Constructor được coi là một trong những phương thức rất đặc biệt, được sử dụng để khởi tạo và trả về một đối tượng của lớp mà nó được định nghĩa. Constructor được đặt tên tương tự như tên lớp mà chúng được định nghĩa, nhưng tất nhiên chúng không được định nghĩa theo dạng kiểu giá trị được trả về. Ngoài ra, các nhà developer cũng có thể sử dụng access modifiers trong khi khai báo Constructor.

Constructor Java là gì?
Constructor Java là gì?

Vì vậy, khi bạn khởi tạo một đối tượng bằng cách gọi phương thức khởi tạo – Constructor của nó bằng một thao tác mới, đối tượng đó cũng được gọi là phương thức khởi tạo của lớp cha và tất cả các  instance variable được khởi tạo thành giá trị mặc định của chúng. Thêm vào đó, các nhà phát triển có thể định nghĩa cho một Constructor bằng bốn công cụ sửa đổi quyền truy cập. Do đó, bạn có thể giới hạn phạm vi truy cập đối với các đối tượng khác.

Quy tắc để tạo Constructor trong Java

Constructors là một phần quan trọng và rất cần hiểu để học lập trình Java một cách hiệu quả. Vì vậy, để bắt đầu, các nhà lập trình cần nắm chắc những quy tắc tạo Constructor trong Java. Cụ thể:

  • Một Constructor trong Java phải có kiểu trả về rõ ràng, đó có thể là abstract, final, static, or synchronized
  • Tên của Constructor phải giống với tên lớp chứa nó

Các kiểu Constructor trong Java

Dưới đây là một số kiểu Constructor trong Java, cụ thể:

Hai kiểu Constructor Java
Hai kiểu Constructor Java

Default Constructor (Hàm khởi tạo mặc định)

Một hàm khởi tạo không có tham số còn được gọi là hàm khởi tạo mặc định. Trong tiếng anh hàm này còn được biết đến với tên Default Constructor hoặc no-arg Constructor. Cú pháp của Default Constructor trong Java là “<class_name>() {}”. Tùy thuộc vào từng đối tượng mà hàm khởi tạo mặc định cung cấp các giá trị mặc định cho đối tượng

Tuy nhiên có một lưu ý nhỏ khi sử dụng hàm No-arg Constructor đó là nếu không có hàm constructor được định nghĩa trong Class Java thì trình biên dịch sẽ làm một hàm constructor mặc định cho lớp đó. Ngoài ra, hạn chế của việc sử dụng một hàm Constructor mặc định đó là người dùng khó có thể thiết lập các giá trị ban đầu cho thuộc tính của đối tượng 

Ví dụ minh họa cho hàm Constructor mặc định
Ví dụ minh họa cho hàm Constructor mặc định

Parameterized Constructor (Hàm khởi tạo có tham số)

Ngược lại với hàm khởi tạo mặc định thì với bất kỳ hàm Constructor nào có chứa tham số đều được gọi là Parameterized Constructor. Constructor tham số được sử dụng nhằm cung cấp các giá trị riêng biệt cho các đối tượng Java khác nhau. Ngoài ra, Parameterized Constructor cũng có thể cung cấp các giá trị giống nhau cho các đối tượng Java khác nhau. 

Ví dụ cho một hàm khởi tạo có tham số
Ví dụ cho một hàm khởi tạo có tham số

Constructor Overloading trong Java là gì?

Tương tự với các phương thức trong Java, Constructor Java cũng có thể là Overload đây là một trong những kỹ thuật trong Java. Đối với Constructor Overloading các nhà phát triển có thể tạo nhiều hàm trong cùng một lớp nhưng với các danh sách tham số khác nhau. Trình biên dịch phân biệt giữa các hàm Overload Constructor thông qua số lượng và kiểu tham số truyền vào. Constructor Overloading trong Java được sử dụng khi có nhu cầu khởi tạo một đối tượng Java theo những cách khác nhau.

Đoạn code demo Constructor Overloading trong Java
Đoạn code demo Constructor Overloading trong Java

Constructor và phương thức trong Java có những điểm gì khác nhau

Đối với Constructor Java:

  • Chúng được sử dụng cho những công việc khởi tạo trạng thái của một đối tượng nhất định
  • Constructor không có kiểu trả về.
  • Constructor được gọi ngầm.
  • Trình biên dịch Java tạo ra constructor mặc định cho class đó nếu người dùng không có hàm constructor được định nghĩa 
  • Tên của constructor phải giống với tên lớp.

Ngược lại với phương thức trong Java:

  • Phương thức được dùng với mục đích thể hiện hành động của đối tượng
  • Phương thức có kiểu trả về
  • Phương thức trong Java được gọi tường minh 
  • Phương thức không được tạo ra bởi trình biên dịch Java 
  • Tên của phương thức không bắt buộc phải giống với tên lớp, chúng có thể tương tự hoặc khác tên lớp

Có thể bạn quan tâm:

Một số câu hỏi thường gặp về Constructor trong Java

Constructor có trả về giá trị nào không?

Mặc dù bạn không thể sử dụng kiểu trả về với hàm Constructor trong Java, nhưng nó sẽ trả về một giá trị. Một phương thức khởi tạo Java trả về thể hiện lớp hiện tại.

Constructor Chaining trong Java là gì?

Constructor Chaining trong Java là gì?
Constructor Chaining trong Java là gì?

Constructor chaining là một kỹ thuật gọi một hàm Constructor từ một hàm khởi tạo khác trong lập trình Java. Trong khi phương thức this() được sử dụng để gọi cùng một hàm tạo của lớp (constructor của class) thì ngược lại với phương thức super() được sử dụng để gọi hàm constructor của lớp bậc trên. Một điều lưu ý nữa đó là không thể gọi hàm constructor của lớp con từ hàm constructor của lớp bậc trên trong Java

Những tác vụ nào khác ngoài khởi tạo có thể được thực hiện bởi một hàm Constructor của Java?

Một hàm constructor trong Java có thể thực hiện bất kỳ hành động nào có thể được thực hiện bởi một phương thức. Một số tác vụ phổ biến nhất được thực hiện bằng cách sử dụng các hàm constructor trong Java, cụ thể:

  • Gọi một phương thức
  • Tạo object
  • Bắt đầu một luồng

Với những thông tin mà chúng tôi cung cấp phía trên đây hy vọng đã giúp bạn đọc hiểu rõ hơn về constructor là gì? Đồng thời đã góp phần hỗ trợ bạn trả lời được những băn khoăn, thắc mắc liên quan đến constructor. Nếu bạn có bất kỳ thắc mắc hay có câu hỏi nào về kiến thức trên, vui lòng để lại thông tin liên lạc hoặc liên hệ ngay với chúng tôi thông qua số hotline để nhận được hỗ trợ nhanh nhất nhé!

Trả lời

Email của bạn sẽ không được hiển thị công khai. Các trường bắt buộc được đánh dấu *

0981578920
icons8-exercise-96