lớp abstract trong java

Constructor trong java

Giới thiệu về constructor trong java: constructor là một dạng đặc biệt của phương thức. Nó được gọi tại thời điểm khởi tạo đối tượng  dùng để khởi tạo các giá trị cho thuộc tính của đối tượng.

Đặc điểm của constructor:

  • Constructor không có kiểu trả về tường minh
  • Constructor phải có tên giống với tên lớp
  • Nếu ta không có constructor trong một lớp, trình biên dịch sẽ tự tạo ra một constructor mặc định trong lớp đó.

Constructor mặc định

Constructor mặc định là constructor không có tham số.

class Bike{
    Bike(){
        System.out.println("Da khoi tao doi tuong Bike");
    }
}
public class TEST {
    public static void main(String[] args){
        Bike bike = new Bike();
    }
}

Ở ví dụ trên ta đã khởi tạo một đối tượng Bike và constructor được gọi.

Da khoi tao doi tuong Bike

Lưu ý: Nếu lớp không có constructor thì trình biên dịch tự động tạo ra một constructor mặc định nhằm khởi tạo các giá trị mặc định (0, null ) cho các thuộc tính của lớp.

Cùng xem ví dụ sau

class Bike{
    int id;
    String name;
    public void display(){
        System.out.println("id : "+ id);
        System.out.println("name : "+ name);
    }
}
public class TEST {
    public static void main(String[] args){
        Bike bike = new Bike();
        bike.display();
    }
}
id : 0
name : null

Mặc dù trong lớp Bike không có constructor nhưng khi biên dịch chương trình sẽ tự tạo ra một constructor mặc định. Constructor này có tác dụng khởi tạo các giá trị mặc định cho các thuộc tính của lớp Bike.

Constructor overloading trong java

Constructor overloading là một kĩ thuật dùng thường dùng. Bạn có thể dùng nhiều constructor để khởi tạo nhiều hay ít thuộc tính. Chương trình sẽ phân biệt các constructor và tự động gọi đến constructor thích hợp. Các constructor này phân biệt bởi số lượng và kiểu của các thuộc tính.

Cùng xem ví dụ sau.

class Bike{
    int id;
    String name;
    String gioitinh;
    Bike(int id){
        this.id = id;
    };
    Bike(int id, String name){
        this.id = id;
        this.name = name;
    }
    Bike(int id, String name, String gioitinh){
        this.id = id;
        this.name = name;
        this.gioitinh = gioitinh;
    }
    Bike(){}; //Constructor mặc định
    public void display(){
        System.out.println("id : "+ id);
        System.out.println("name : "+ name);
        System.out.println("gioi tinh : "+ gioitinh);
    }
}
public class TEST {
    public static void main(String[] args){
        Bike bike_1 = new Bike(15);
        bike_1.display();
        Bike bike_2 = new Bike(15,"tuan");
        bike_2.display();
        Bike bike_3 = new Bike(15,"tuan","nam");
        bike_3.display();
    }
}

Sau khi chạy ta có kết quả

id : 15
name : null
gioi tinh : null
id : 15
name : tuan
gioi tinh : null
id : 15
name : tuan
gioi tinh : nam

Lưu ý:

class Bike{
    int id;
    String name;
    String gioitinh;
    
    Bike(int id, String name){
        this.id = id;
        this.name = name;
    }
    Bike(int id, String gioitinh){
        this.id = id;
        this.gioitinh = gioitinh;
    }
    public void display(){
        System.out.println("id : "+ id);
        System.out.println("name : "+ name);
        System.out.println("gioi tinh : "+ gioitinh);
    }
}
  • Các bạn làm như thế này là sai vì khi khởi tạo các bạn truyền vào tham số thứ hai kiểu String nhưng chương trình không thể phân biệt chuỗi đó là name hay giới tính. Vậy nên chương trình sẽ biên dịch lỗi.
  • Mình khuyến khích các bạn nên tạo một constructor mặc định ( không có tham số đầu vào ).

Bài viết mình đến đây là kết thúc. Cám ơn các bạn đã theo dõi !

Similar Posts

Subscribe
Notify of
guest
0 Bình luận
Inline Feedbacks
View all comments