Trình tạo Java (Có ví dụ)

Trong hướng dẫn này, chúng ta sẽ tìm hiểu về các hàm tạo Java, kiểu của chúng và cách sử dụng chúng với sự trợ giúp của các ví dụ.

Constructor là gì?

Một hàm tạo trong Java tương tự như một phương thức được gọi khi một đối tượng của lớp được tạo.

Không giống như các phương thức Java, một hàm tạo có cùng tên với tên của lớp và không có bất kỳ kiểu trả về nào. Ví dụ,

 Kiểm tra lớp (Test () (// phần thân hàm tạo))

Đây, Test()là một hàm tạo. Nó có cùng tên với lớp và không có kiểu trả về.

Bài đọc được đề xuất: Tại sao các hàm tạo không trả về giá trị

Ví dụ 1: Java Constructor

 class Main ( private String name; // constructor Main() ( System.out.println("Constructor Called:"); name = "Programiz"; ) public static void main(String() args) ( // constructor is invoked while // creating an object of the Main class Main obj = new Main(); System.out.println("The name is " + obj.name); ) )

Đầu ra :

 Constructor được gọi: Tên là Programiz

Trong ví dụ trên, chúng ta đã tạo một hàm tạo có tên Main(). Bên trong hàm tạo, chúng ta đang khởi tạo giá trị của biến tên.

Chú ý câu lệnh tạo một đối tượng của lớp Main.

 Main obj = new Main();

Ở đây, khi đối tượng được tạo, hàm Main()tạo được gọi. Và, giá trị của biến tên được khởi tạo.

Do đó, chương trình in ra giá trị của các biến tên là Programiz.

Các loại hàm tạo

Trong Java, các hàm tạo có thể được chia thành 3 loại:

  1. No-Arg Constructor
  2. Trình tạo tham số
  3. Nhà xây dựng mặc định

1. Java No-Arg Constructors

Tương tự như các phương thức, một hàm tạo Java có thể có hoặc không có bất kỳ tham số (đối số) nào.

Nếu một hàm tạo không chấp nhận bất kỳ tham số nào, nó được gọi là một hàm tạo không đối số. Ví dụ,

 private Constructor() ( // body of the constructor )

Ví dụ 2: Hàm khởi tạo no-arg riêng trong Java

 class Main ( int i; // constructor with no parameter private Main() ( i = 5; System.out.println("Constructor is called"); ) public static void main(String() args) ( // calling the constructor without any parameter Main obj = new Main(); System.out.println("Value of i: " + obj.i); ) )

Đầu ra :

 Hàm tạo được gọi là Giá trị của i: 5

Trong ví dụ trên, chúng ta đã tạo một phương thức khởi tạo Main(). Ở đây, hàm tạo không chấp nhận bất kỳ tham số nào. Do đó, nó được biết đến như một hàm tạo không đối số.

Lưu ý rằng chúng ta đã khai báo hàm tạo là private.

Khi một hàm tạo được khai báo private, nó không thể được truy cập từ bên ngoài lớp. Vì vậy, việc tạo các đối tượng từ bên ngoài lớp bị cấm sử dụng phương thức khởi tạo private.

Ở đây, chúng ta đang tạo đối tượng bên trong cùng một lớp. Do đó, chương trình có thể truy cập hàm tạo. Để tìm hiểu thêm, hãy truy cập Java implement Private Constructor.

Tuy nhiên, nếu chúng ta muốn tạo các đối tượng bên ngoài lớp, thì chúng ta cần khai báo hàm tạo là public.

Ví dụ 3: Các hàm tạo no-arg công khai trong Java

 class Company ( String name; // public constructor public Company() ( name = "Programiz"; ) ) public class Main ( public static void main(String() args) ( // object is created in another class Company obj = new Company(); System.out.println("Company name = " + obj.name); ) )

Đầu ra :

 Tên công ty = Programiz

Đề xuất Đọc: Java Access Modifier

2. Java Parameterized Constructor

Một hàm tạo Java cũng có thể chấp nhận một hoặc nhiều tham số. Các hàm tạo như vậy được gọi là các hàm tạo tham số hóa (hàm tạo có tham số).

Ví dụ 4: Hàm tạo được tham số hóa

 class Main ( String languages; // constructor accepting single value Main(String lang) ( languages = lang; System.out.println(languages + " Programming Language"); ) public static void main(String() args) ( // call constructor by passing a single value Main obj1 = new Main("Java"); Main obj2 = new Main("Python"); Main obj3 = new Main("C"); ) )

Đầu ra :

 Ngôn ngữ lập trình Java Ngôn ngữ lập trình Python Ngôn ngữ lập trình C

Trong ví dụ trên, chúng ta đã tạo một hàm tạo có tên Main(). Ở đây, hàm tạo nhận một tham số duy nhất. Chú ý biểu thức,

 Main obj1 = new Main("Java");

Ở đây, chúng ta đang chuyển một giá trị duy nhất cho hàm tạo. Dựa trên đối số được truyền vào, biến ngôn ngữ được khởi tạo bên trong hàm tạo.

3. Hàm tạo mặc định của Java

Nếu chúng ta không tạo bất kỳ phương thức khởi tạo nào, trình biên dịch Java sẽ tự động tạo một phương thức khởi tạo no-arg trong quá trình thực thi chương trình. Hàm tạo này được gọi là hàm tạo mặc định.

Ví dụ 5: Khối mã lệnh mặc định

 class Main ( int a; boolean b; public static void main(String() args) ( // A default constructor is called Main obj = new Main(); System.out.println("Default Value:"); System.out.println("a = " + obj.a); System.out.println("b = " + obj.b); ) )

Đầu ra :

 a = 0 b = false

Ở đây, chúng tôi chưa tạo bất kỳ hàm tạo nào. Do đó, trình biên dịch Java tự động tạo phương thức khởi tạo mặc định.

Hàm tạo mặc định khởi tạo bất kỳ biến cá thể chưa được khởi tạo nào với các giá trị mặc định.

Kiểu Giá trị mặc định
boolean sai
byte 0
short 0
int 0
long 0L
char u0000
float 0,0f
double 0,0 ngày
object Tham chiếu null

Trong chương trình trên, các biến a và b được khởi tạo với giá trị mặc định là 0falsetương ứng.

The above program is equivalent to:

 class Main ( int a; boolean b; // a private constructor private Main() ( a = 0; b = false; ) public static void main(String() args) ( // call the constructor Main obj = new Main(); System.out.println("Default Value:"); System.out.println("a = " + obj.a); System.out.println("b = " + obj.b); ) )

The output of the program is the same as Example 5.

Important Notes on Java Constructors

  • Constructors are invoked implicitly when you instantiate objects.
  • The two rules for creating a constructor are:
    The name of the constructor should be the same as the class.
    A Java constructor must not have a return type.
  • If a class doesn't have a constructor, the Java compiler automatically creates a default constructor during run-time. The default constructor initializes instance variables with default values. For example, the int variable will be initialized to 0
  • Constructor types:
    No-Arg Constructor - a constructor that does not accept any arguments
    Parameterized constructor - a constructor that accepts arguments
    Default Constructor - a constructor that is automatically created by the Java compiler if it is not explicitly defined.
  • A constructor cannot be abstract or static or final.
  • A constructor can be overloaded but can not be overridden.

Constructors Overloading in Java

Similar to Java method overloading, we can also create two or more constructors with different parameters. This is called constructors overloading.

Example 6: Java Constructor Overloading

 class Main ( String language; // constructor with no parameter Main() ( this.language = "Java"; ) // constructor with a single parameter Main(String language) ( this.language = language; ) public void getName() ( System.out.println("Programming Langauage: " + this.language); ) public static void main(String() args) ( // call constructor with no parameter Main obj1 = new Main(); // call constructor with a single parameter Main obj2 = new Main("Python"); obj1.getName(); obj2.getName(); ) )

Output:

 Programming Language: Java Programming Language: Python

Trong ví dụ trên, chúng ta có hai hàm tạo: Main()Main(String language). Ở đây, cả hàm tạo đều khởi tạo giá trị của ngôn ngữ biến với các giá trị khác nhau.

Dựa trên tham số được truyền trong quá trình tạo đối tượng, các hàm tạo khác nhau được gọi và các giá trị khác nhau được gán.

Cũng có thể gọi một hàm tạo này từ một hàm tạo khác. Để tìm hiểu thêm, hãy truy cập Java Call One Constructor từ Another.

Lưu ý : Chúng tôi đã sử dụng thistừ khóa để chỉ định biến của lớp. Để biết thêm về thistừ khóa, hãy truy cập Java từ khóa này.

thú vị bài viết...