Java Constructors là gì?





Tết nghỉ rãnh rỗi ôn tập lại kiến thức xíu sẵn viết lại theo cách hiểu của mình nên có gì sơ xót các bạn bỏ qua và chỉnh lý hộ nhẹ phát.

Bài viết này mình sẽ mô tả các định nghĩa và Java Constructors.






Constructors dịch sang tiếng viết có nghĩa là xây dựng, trong lập trình thì ta có thể hiểu theo nghĩa tạo ra một cái gì đó, hoặc thiết lập, do dịch sang tiếng việt nghe hem hay lắm nên tôi sẽ dùng từ tiếng anh "Constructors" để thể hiện trong bài viết.

Constructor được yêu cầu để tạo đối tượng của một class(lớp). Constructors được dùng để khởi tạo các biến của một đối tượng.

Khai báo của Constructor giống với khải báo cảu method(phương thức). Nó phải có cùng tên với class(lớp) và không có giá trị trả về.

Constructors có thể được chia thành 2 loại, default constructors(constructors mặc định) và parameterized constructors(constructors tham số).

Trường hợp bạn không định nghĩa constructor, thì trình biên dịch khởi tạo ra một default constructor(constructor mặc định). Default constructors thì không chứa bất kỳ parameters(thông số) nào. Default constructors chỉ được khởi tạo khi không có bất kỳ constructors nào được định nghĩa bởi chúng ta.

Prameterized constructors được yêu cầu thông qua parameters(thông số) để khởi tạo object(đối tượng). Chúng ta có thể khai báo một constructors có cùng tên với các kiểu dữ liệu khác nhau như là thông số của chính nó, điều này được gọi là phép đa năng hóa(Overloading).

Sử dụng 'this()' để giao tiếp từ một constructor đến một constructor khác trong cùng một class(lớp).

Sử dung 'supper()' để giao tiếp với super class(lớp cha) constructor.

Các định nghĩa trên có vẻ hơi phức tạp vào khó hiểu thì phải ^^! Vì vậy chúng ta sẽ đi qua một số ví đụ để hiểu rõ hơn về các định nghĩa trên.

Default Constructor - Dưới đây là đoạn code khai báo về default constructor.

 public class JavaDefaultConstructor
{

    public JavaDefaultConstructor()
    {
        System.out.println("Tôi là default constructor...");
        System.out.println("\n \n \t vnlives.net");
    }

    public static void main(String[] args)
    {
        JavaDefaultConstructor jdc = new JavaDefaultConstructor();
    }
}

Kết quả sau khi chạy đoạn code trên.



Java Parameterized Constructor - Dưới đây là code mô tả về Parameterized Constructor.

public class JavaParameterizedConstructor {
    
    private String name;
    
    public JavaParameterizedConstructor(String str){
        this.name = str;
        System.out.println("Toi la parameterized constructor.");
        System.out.println(" -- Gia tri parameter là: " + str);
    }
    
    public static void main(String[] args){
        JavaParameterizedConstructor jpc = new JavaParameterizedConstructor("vnlives.net");
    }
}

Kết quả sau khi chạy đoạn code trên.


Java Overloading Constructors

Java cho phép tạo các constructors khác nhau có cùng một tên nhưng với điều kiện là các parameters của các constructors này phải khác nhau.

Như ví dụ bên dưới tôi tạo ra 4 constructors nhưng có cùng một tên "JavaOverloadingConstructors" và mỗi constructor này đều có các tham số riêng.

public class JavaOverloadingConstructors {
    
    public JavaOverloadingConstructors(){
        System.out.println("Toi la default constructor.");
    }

    public JavaOverloadingConstructors(String str){
        System.out.println("Toi parameter constructor co parameter String.");
    }   

    public JavaOverloadingConstructors(int i){
        System.out.println("Toi la parameter constructor co parameter int.");
    }
  
    public JavaOverloadingConstructors(int i, int j){
        System.out.println("Toi la parameter constructor co 2 parameter int.");
    }
    
    public static void main(String[] args){
        JavaOverloadingConstructors jolc_01 = new JavaOverloadingConstructors();
        JavaOverloadingConstructors jolc_02 = new JavaOverloadingConstructors("vnlives.net");       
        JavaOverloadingConstructors jolc_03 = new JavaOverloadingConstructors(10);
        JavaOverloadingConstructors jolc_04 = new JavaOverloadingConstructors(10,20);
       
    }
}

Dưới đây là kết quả khi chạy chương trình trên.


this() - Dưới đây là code mô tả cách sử dụng 'this()' để giao tiếp với một constructor khác.

public class JavaContructorCommunicate {
    
    public JavaContructorCommunicate(){
        System.out.println("Toi la default constructor.");
    }
    public JavaContructorCommunicate(int i){
        this();
        System.out.println("Toi la parameter constructor co parameter int.");
    }
    public JavaContructorCommunicate(int i,int j){
        this(j);
        System.out.println("Toi la parameter constructor co parameter int.");
        System.out.println("\n \n \t -- vnlives.net --");
    }
    
    public static void main(String a[]){
        JavaContructorCommunicate ch = new JavaContructorCommunicate(10,20);
    }
}

Kết quả đoạn code trên sẽ hiển thị như hình bên dưới.


Supper Constructor - Dưới đây là cách gọi constructor của supper class(lớp cha) từ sup class(lơp con).
public class JavaSupperContructor extends SupperClassContructor {
   
    public JavaSupperContructor(String str) {
        super(str);       
    }
   
    public static void main(String[] args) {
        JavaSupperContructor jsc = new JavaSupperContructor("Toi dang giao tiep voi SupperClassContructor.");
        System.out.println("\n \n \t -- vnlives.net --");
    }
}

class SupperClassContructor {
    public SupperClassContructor(String str) {
        System.out.println(str);
    }
}

Lâu rồi mới viết bài dài như vậy, có gì sơ xót mong ACE chỉnh lý hộ ^^! Chúc ACE năm mới đạt được nhiều thành công.












2 comments: