Tất tần tật về Constructor trong JAVA

Ngày đăng: 04/04/2021   -    Cập nhật: 14/04/2021

Constructor là gì?



Constructor trong Java (Hàm tạo trong Java) là một block code được gọi khi một thể hiện của một đối tượng được tạo và bộ nhớ được cấp phát cho đối tượng đó.


Constructor là một loại phương thức đặc biệt được sử dụng để khởi tạo một đối tượng. Bạn cũng có thể sử dụng access modifiers trong khi khai báo Constructor.


Constructor trong Java

Constructor trong Java


Constructor là một phần quan trọng phải hiểu để có thể học lập trình Java hiệu quả. Vì vậy, để bắt đầu, hãy đến với các Quy tắc tạo Constructor trong Java.


Hey!!

> Nếu muốn hiểu rõ tất cả về Java? Hãy tham gia ngay 
Khóa học Java Fullstack tại NIIT - ICT Hà Nội. Tất cả sẽ được học trong Khóa đào tạo liên tục 4-5 tháng này!


Ok, bây giờ chúng ta hãy tiếp tục bài viết...


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



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


Các kiểu Constructor trong Java



Trong Java thì có 2 kiểu Constructor


1. Default Constructor hoặc no-arg Constructor (Hàm khởi tạo mặc định)



Default Constructor là hàm khởi tạo không có tham số. Đây là lý do tại sao nó còn được gọi là no-arg Constructor.


Tên của constructor trùng với tên của class.


Cú pháp chung của Default Constructor trong Java là:




ClassName(){}
 


> Lưu ý: Nếu không có hàm constructor được định nghĩa trong class Java, thì trình biên dịch Java sẽ tự động tạo một hàm constructor mặc định cho class đó.


Tùy thuộc vào loại đối tượng, hàm constructor mặc định cung cấp các giá trị mặc định cho đối tượng.


Hạn chế của việc sử dụng một hàm constructor mặc định được javac tạo tự động là sau đó chúng ta không thể thiết lập các giá trị ban đầu cho các thuộc tính của đối tượng.


Ví dụ:




class ConstructorDemo
{
    // Constructor
    ConstructorDemo(){
        System.out.println("Đây là hàm constructor");
    }
    public static void main(String args[]){
        // Tạo đối tượng mới
        ConstructorDemo a = new ConstructorDemo();
    }
}
 



Kết quả:

 


Đây là hàm constructor
 



> Lưu ý: Hàm constructor trong Java tự động được gọi khi đối tượng được tạo

 

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



Bất kỳ hàm Constructor nào có tham số được gọi là Parameterized Constructor.


Mặc dù một 
Parameterized Constructor thường được sử dụng để cung cấp các giá trị riêng biệt cho các đối tượng Java khác nhau, nhưng nó cũng có thể cung cấp cùng các giá trị cho các đối tượng Java khác nhau.


Ví dụ:




class ParaConst {

    // Thuộc tính
    int id;
    String name;

    // Constructor có tham số
    ParaConst(int iString n) {
        id = i;
        name = n;
    }

    // Phương thức
    void display(){
        System.out.println(id + " " + name);
    }
    public static void main(String args[]) {
        // Tạo đối tượng
        ParaConst s1 = new ParaConst(121"NIIT");
        ParaConst s2 = new ParaConst(232"ICT Hà Nội");

        // Gọi phương thức
        s1.display();
        s2.display();
    }
}
 


Kết quả:



121 NIIT
232 ICT Hà Nội
 


 

Constructor Overloading (Nạp chồng) trong Java là gì?



Giống như các phương thức trong Java, Constructor trong Java cũng có thể Overload.


Với Constructor overloading, chúng ta có thể có cùng hàm constructor nhưng với các danh sách tham số khác nhau. Tất cả chúng được sắp xếp theo cách khác nhau để thực hiện những nhiệm vụ riêng biệt.


Trình biên dịch Java phân biệt giữa các overload constructor theo tổng số tham số trong danh sáchkiểu của chúng.


Đoạn code sau demo constructor overloading trong Java:


 


class OverloadConst{

    int id;
    String name;
    int age;

    // Constructor có 2 tham số
    OverloadConst(int i,String n){
        id = i;
        name = n;
    }

    // Constructor có 3 tham số
    OverloadConst(int iString nint a){
        id = i;
        name = n;
        age = a;
    }

    // Phương thức
    void display(){
        System.out.println(id + " " + name + " " + age);
    }

    public static void main(String args[]){
        // Tạo đối tượng và truyền vào 2 tham số
        OverloadConst s1 = new OverloadConst(121"NIIT");

        // Tạo đối tượng và truyền vào 3 tham số
        OverloadConst s2 = new OverloadConst(232"ICT Hà Nội", 20);

        // Gọi phương thức
        s1.display();
        s2.display();
    }
}
 

 


Kết quả nhận được:

 


121 NIIT 0
232 ICT Hà Nội 20
 



> Lưu ý: 0 là giá trị mặc định của kiểu int


 

Constructor vs Method trong Java.



Java method là một đoạn code có tên cụ thể. Nó có thể được gọi ở bất kỳ vị trí nào trong chương trình bằng cách sử dụng tên của nó.


Java method cũng có thể được hiểu là một chương trình con hoạt động trên dữ liệu và trả về một số giá trị.


Java constructor là một loại phương thức đặc biệt. Cả hai đều giống nhau theo nhiều cách, nhưng lại không phải là một.


 

Dưới đây là một số khác biệt quan trọng nhất giữa Java constructor và Java method:



  • Invoking: Trong khi constructor được gọi ngầm, phương thức lại được gọi rõ ràng
  • Java compiler: Trình biên dịch Java không bao giờ cung cấp một phương thức. Tuy nhiên, trình biên dịch Java cung cấp một constructor mặc định nếu không có một cái nào được định nghĩa trong class.
  • Cách đặt tên: Tên của constructor trong Java phải giống với tên của class. Tuy nhiên, phương thức có thể cùng tên với class chứa nó hoặc không.
  • Số lần gọi: Một hàm constructor được gọi một lần và chỉ trong thời gian tạo đối tượng. Mặt khác, một phương thức Java có thể được gọi là nhiều lần.
  • Kiểu trả về: Một phương thức Java phải có kiểu trả về nhưng có cùng kiểu với hàm constructor hay không thì không bắt buộc.
  • Cách sử dụng: Trong khi một phương thức được sử dụng để phơi bày hành vi của một đối tượng Java, thì một hàm constructor được sử dụng để khởi tạo trạng thái giống nhau.


Copy Constructor trong Java



Mặc dù không có điều khoản nào để copy constructor trong Java, nhưng có thể sao chép các giá trị từ một đối tượng Java sang đối tượng khác giống như sử dụng một hàm copy constructor trong C ++. 


Khác với việc sử dụng hàm constructor để sao chép giá trị từ đối tượng này sang đối tượng khác, điều tương tự cũng có thể được thực hiện bằng cách:



  • Gán các giá trị của một đối tượng cho đối tượng khác
  • hoặc sử dụng phương thức clone() của Object class


Đoạn code sau sẽ giúp bạn hiểu:


Cách copy giá trị từ đối tượng này sang đối tượng khác trong Java.




class Copy{
    int id;
    String name;

    // Constructor 2 tham số
    Copy(int iString n){
        id = i;
        name = n;
    }

    // Constructor
    Copy(Copy s){
        id = s.id;
        name = s.name;
    }

    // Phương thức
    void display(){
        System.out.println(id + " " + name);
    }

    public static void main(String args[]){

        // Tạo đối tượng
        Copy s1 = new Copy(121"NIIT");
        Copy s2 = new Copy(s1);

        // Gọi phương thức
        s1.display();
        s2.display();
    }
}
 


Kết quả nhận được là:



121 NIIT
121 NIIT
 



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



Câu hỏi 1: Liệu constructor có trả về giá trị nào không?



Trả lời:


Mặc dù bạn không thể sử dụng kiểu trả về với Java constructor, nhưng nó trả về một giá trị. Một hàm tạo Java trả về thể hiện của clalss hiện tại.


Câu hỏi 2: Constructor Chaining trong Java là gì?



Trả lời:


Constructor Chaining
 là một kỹ thuật gọi hàm constructor từ một số hàm constructor 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 constructor của class, thì phương thức super() được sử dụng để gọi hàm constructor của class bậc trên.



Câu hỏi 3: Có thể gọi hàm constructor của class con từ hàm constructor của class bậc trên trong Java không?



Trả lời: Không


Câu hỏi 4: Trong Java có các hàm destructor không?



Trả lời:


Java không có các hàm destructor vì không thể dự đoán khi nào một đối tượng sẽ bị phá hủy trong Java.


Câu hỏi 5: 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?



Trả lời:


Một hàm constructor trong Java có thể thực hiện bất kỳ loại hành động nào có thể được thực hiện bằng 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 hàm constructor trong Java là:



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



Câu hỏi 6: Khi nào thì cần đến constructor overloading trong Java?



Trả lời:


Constructor Overloading được sử dụng trong Java thông thường khi có yêu cầu khởi tạo một đối tượng Java theo nhiều cách khác nhau.



Câu hỏi 7: Điều gì sẽ xảy ra nếu thêm một kiểu trả về cho hàm constructor trong Java?



Trả lời:


Lúc đó bạn sẽ lập tức nhận được cảnh báo "this method has a contructor name".



Tổng kết



Đó, đó là tất cả về constructor trong Java. Học cách sử dụng hiệu quả constructor là một trong những bí quyết quan trọng chinh phục các ngôn ngữ lập trình cấp cao.


Để hiểu rõ hơn về những khái niệm khác ngoài constructor, bạn có thể đọc thêm bài viết Tự học Java (One for All) này!


Nếu bạn muốn tìm hiểu kỹ hơn về Contructor cũng như muốn nắm giữ bí quyết chinh phục nhiều ngôn ngữ lập trình hơn?


> Đọc thêm: Constructor trong JavaScript



---
HỌC VIỆN ĐÀO TẠO CNTT NIIT - ICT HÀ NỘI
Học Lập trình chất lượng cao (Since 2002). Học thực tế + Tuyển dụng ngay!
Đc: Tầng 3, 25T2, N05, Nguyễn Thị Thập, Cầu Giấy, Hà Nội
SĐT: 02435574074 - 0383.180086
Email: hello@niithanoi.edu.vn
Fanpage: https://facebook.com/NIIT.ICT/
 
#niit #icthanoi #niithanoi niiticthanoi #hoclaptrinh #khoahoclaptrinh #hoclaptrinhjava #hoclaptrinhphp #java #php #python
Bình luận Facebook
Khóa học liên quan đến bài viết

KHÓA HỌC LẬP TRÌNH FRONT END VỚI REACT.JS

56 giờ
Học Lập trình Front end hiện đại với ReactJS. Học làm chủ HTML, CSS, JS và thư viện JavaScript phổ biến nhất hiện nay. Sẵn sàng đi thực tập / đi làm ngay sau khóa học.

Khóa học PHP Full stack [2023] cho người mới bắt đầu

96 giờ
Khóa học Lập trình PHP Full stack, phiên bản cập nhật lần thứ 8. Dạy Lập trình PHP bài bản từ Front end đến Back end + Laravel. Hướng dẫn làm 2 Dự Án Web lớn

Khóa học Java Full stack (IJFD)

104 giờ
Học lập trình Java Fullstack với khóa học được xây dựng theo lộ trình bài bản, từ JAVA CƠ BẢN đến JAVA WEB và nâng cao về JAVA FRAMEWORK như: Spring Boot, Hibernate

Khóa học Lập trình Android tại Hà Nội

59 giờ
NIIT - ICT Hà Nội cung cấp khóa học Lập trình Android với ngôn ngữ lập trình Java. Chương trình cung ứng lập trình viên Android theo yêu cầu doanh nghiệp.

Lập trình Android Nâng cao

56 giờ
Khóa học Android nâng cao cung cấp kiến thức và kỹ năng chuyên sâu về lập trình Android. Phát triển ứng dụng tiên triến như: Lập trình giao diện tùy biến, xử lý dữ liệu nâng cao
Mục lục
Đăng ký tư vấn
Nhân viên gọi điện tư vấn miễn phí sau khi đăng ký
Được cập nhật các ưu đãi sớm nhất
Hotline: 0383180086
Tên không được để trống
Số điện thoại không được để trống
Email không được để trống
Hãy đăng ký để nhận những thông tin mới nhất về học bổng mới nhất tại NIIT - ICT Hà Nội
top
Đóng lại Đăng ký học tại NIIT - ICT Hà Nội
6260+ học viên đã theo học tại NIIT - ICT Hà Nội và có việc làm tốt trong ngành lập trình. Nắm lấy cơ hội ngay hôm nay!
Chọn khóa học
  • KHÓA HỌC LẬP TRÌNH FRONT END VỚI REACT.JS
  • KHÓA HỌC LẬP TRÌNH PHP WEB
  • Khóa học PHP Full stack [2023] cho người mới bắt đầu
  • Khóa học BIG DATA với Hadoop và Spark
  • Khóa học Lập trình Android tại Hà Nội
  • [Tuyển sinh 2023] Lập trình viên Quốc tế DigiNxt
  • Khóa học Tiền lương & Phúc lợi (C&B Excel) tại Hà Nội
  • LẬP TRÌNH GAME
    • Khóa học Lập trình Game Unity
  • LẬP TRÌNH WEB FRONT END
    • KHÓA HỌC PYTHON HƯỚNG ĐỐI TƯỢNG
    • KHÓA HỌC ANGULAR & TYPESCRIPT (FRONT END)
  • LẬP TRÌNH WEB BACK END
    • LẬP TRÌNH JAVA WEB VỚI FRAME WORK
    • Lập trình Web với Django
    • Lập trình PHP với Laravel Framework
  • CHƯƠNG TRÌNH ĐÀO TẠO ỨNG DỤNG CÔNG NGHỆ
    • Khóa học Tiền lương & Phúc lợi (C&B Excel) tại TP HCM
  • LẬP TRÌNH WEB FULL STACK
    • Khóa học Java Full stack (IJFD)
  • LẬP TRÌNH MOBILE
    • FRONT-END VỚI REACTJS VÀ REACT NATIVE
    • Lập trình Android Nâng cao
  • ĐÀO TẠO CHO DOANH NGHIỆP
    • KHÓA HỌC BUSINESS ANALYSIC TỪ CƠ BẢN ĐẾN NÂNG CAO 2023
    • Khóa học Magento: Làm chủ CMS TMĐT lớn nhất
    • Khóa học IOT: Xây dựng Sản phẩm IOT với Raspberry Pi
    • Khóa học Automation Testing Chuyên nghiệp
  • KHÓA HỌC DỰ ÁN
    • Học sử dụng bộ Office: Word, Excel, Power Point, Mail chuyên nghiệp
  • KHÓA HỌC KHÁC
    • VBA Excel Toàn Tập (Cơ Bản - Nâng Cao)
    • VBA Excel Nâng cao
    • Khóa học JMeter: Performance Testing
    • Khóa học Tester đạt chuẩn Quốc tế ISTQB Foundation Level
    • Khoá Học Tester đạt chuẩn quốc tế ISTQB Advanced Level
Bạn chưa chọn khóa học cần đăng ký
Tên không được để trống
Số điện thoại không được để trống
Email không được để trống
Đăng ký học thành công!
Cảm ơn bạn đã đăng ký học tại NIIT - ICT HÀ NỘI!