Java hàm, kiểu dữ liệu

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ụ,

class Test {
  Test() {
    // constructor body
  }
}

Đây, Test()là một hàm tạo. Nó có cùng tên với tên của 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 Called:
The name is 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 :

Constructor is called
Value of 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";
  }
}

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 :

Company name = 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 :

Java Programming Language
Python Programming Language
C Programming Language

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. Lưu ý 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. Khối mã lệnh 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 phiên bản chưa được khởi tạo nào với các giá trị mặc định.

TypeDefault Value
booleanfalse
byte0
short0
int0
long0L
char\u0000
float0.0f
double0.0d
objectReference 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à 0 và falsetương ứng.

Chương trình trên tương đương với:

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);
  }
}

Đầu ra của chương trình giống như Ví dụ 5.

Lưu ý quan trọng về trình tạo Java

  • 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.

Nạp chồng hàm tạo trong Java

Tương tự như nạp chồng phương thức Java , chúng ta cũng có thể tạo hai hoặc nhiều hàm tạo với các tham số khác nhau. Điều này được gọi là quá tải các hàm tạo.

Ví dụ 6: Nạp chồng hàm tạo Java

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();
  }
}

Đầu ra :

Programming Language: Java
Programming Language: Python

Trong ví dụ trên, chúng ta có hai hàm tạo: Main()và Main(String language). Ở đây, cả hàm khởi 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 .









Gõ tìm kiếm nhanh...