[Java Cơ Bản] Phương Thức Khởi Tạo (Constructor) - Code Lean
Có thể bạn quan tâm
Bài đăng nổi bật
Chiến Tranh trong một Thế Giới Phẳng
10:16 Trang chủJava [Java cơ bản] Phương thức khởi tạo (Constructor) 15:26 0 Nhận xét
Trong phần này chúng ta sẽ tìm hiểu về: - Constructor trong Java là gì?
- Quy tắc tạo constructor
- Constructor overleading
- Constructor Chaining
Constructor là gì?
Constructor là một phương thức đặc biệt được sử dụng để khởi tạo một đối tượng mới và được gọi ngay sau khi bộ nhớ được cấp phát cho đối tượng. Phương thức khởi tạo còn được sử dụng để khởi tạo thuộc tính của đối tượng thành các giá trị mong muốn hoặc mang giá trị mặc định tại thời điểm tạo đối tượng. Khi tạo một lớp không bắt buộc phải viết mã tạo phương thức khởi tạo. Nếu không có hàm tạo nào được tạo, trình biên dịch gọi hàm tạo mặc định và khởi tạo các biến thành viên theo các giá trị mặc định của nó.- Với biến có kiểu dữ liệu số giá trị mặc định khởi tạo là 0
- Với biến có kiểu dữ liệu ký tự giá trị mặc định khởi tạo là null (‘\0’)
- Các biến tham chiếu được khởi tạo là null
Các quy tắc để tạo Constructor
1.Constructor phải có cùng tên với tên lớp của nó 2.Constructor không có kiểu dữ liệu trả về (thậm chí là kiểu dữ liệu void) 3.Constructor được gọi sử dụng toán tử new khi một đối tượng được tạo. Constructor đóng vai trò quan trọng trong việc khởi tạo đối tượng. Ví dụ 1 - Tạo constructor đầu tiên trong Java Bước 1: Nhập mã sau vào trình soạn thảo của bạn. class Demo{ intvalue1; intvalue2; Demo(){ value1 = 10; value2 = 20; System.out.println("Inside Constructor"); } public void display(){ System.out.println("Value1 === "+value1); System.out.println("Value2 === "+value2); } public static void main(String args[]){ Demo d1 = new Demo(); d1.display(); } } Bước 2: Lưu, chạy và biên dịch mã. Quan sát đầu ra. Đầu ra: Inside Constructor Value1 === 10 Value2 === 20Constructor Overloading (Nạp chồng constructor)
Constructor Overloading là một kỹ thuật trong Java, trong đó một lớp có thể có nhiều hàm tạo với các tham số đầu vào khác nhau. Trình biên dịch phân biệt các hàm tạo này bằng cách tính đến số lượng tham số trong danh sách và kiểu của chúng. Ví dụ về các hàm tạo hợp lệ cho lớp Account Account(int a); Account (int a,int b); Account (String a,int b); Ví dụ 2 - Constructor Overloading Bước 1: Nhập mã vào trình soạn thảo. class Demo{ intvalue1; intvalue2; /*Demo(){ value1 = 10; value2 = 20; System.out.println("Inside 1st Constructor"); }*/ Demo(int a){ value1 = a; System.out.println("Inside 2nd Constructor"); } Demo(int a,int b){ value1 = a; value2 = b; System.out.println("Inside 3rd Constructor"); } public void display(){ System.out.println("Value1 === "+value1); System.out.println("Value2 === "+value2); } public static void main(String args[]){ Demo d1 = new Demo(); Demo d2 = new Demo(30); Demo d3 = new Demo(30,40); d1.display(); d2.display(); d3.display(); } } Bước 2: Lưu, biên dịch và chạy mã. Bước 3: Lỗi = ?. Hãy thử và gỡ lỗi trước khi tiếp tục bước tiếp theo. Bước 4: Mỗi lớp có một constructor mặc định. Constructor mặc định cho lớp Demo là Demo(). Trong trường hợp bạn không cung cấp constructor mặc định, trình biên dịch sẽ tạo nó cho bạn và khởi tạo các biến thành các giá trị mặc định. Bạn có thể chọn ghi đè hàm tạo mặc định này và khởi tạo các biến thành các giá trị mong muốn của bạn như trong Ví dụ 1. Lưu ý: Nếu bạn chỉ định một hàm tạo với tham số đầu vào như Demo (int a) và muốn sử dụng hàm tạo mặc định Demo(), thì bắt buộc bạn phải tạo nó. Nói cách khác, trong trường hợp hàm tạo của bạn bị ghi đè và bạn muốn sử dụng hàm tạo mặc định, thì nó cần phải được xây dựng khi tạo lớp. Bước 5: Bỏ chú thích ở mã lệnh ở dòng # 4- 8. Lưu, biên dịch và chạy mã.Constructor Chaining
Hãy xem xét một kịch bản trong đó một lớp cơ sở được mở rộng bởi một lớp con. Bất cứ khi nào một đối tượng của lớp con được tạo, hàm tạo của lớp cha được gọi trước tiên. Điều này được gọi là Constructor Chaining. Ví dụ 3 - Hiểu được constructor chaining Bước 1: Sao chép mã sau vào trình soạn thảo. class Demo{ intvalue1; intvalue2; Demo(){ value1 = 1; value2 = 2; System.out.println("Inside 1st Parent Constructor"); } Demo(int a){ value1 = a; System.out.println("Inside 2nd Parent Constructor"); } public void display(){ System.out.println("Value1 === "+value1); System.out.println("Value2 === "+value2); } public static void main(String args[]){ DemoChild d1 = new DemoChild(); d1.display(); } } class DemoChild extends Demo{ int value3; int value4; DemoChild(){ //super(5); value3 = 3; value4 = 4; System.out.println("Inside the Constructor of Child"); } public void display(){ System.out.println("Value1 === "+value1); System.out.println("Value2 === "+value2); System.out.println("Value1 === "+value3); System.out.println("Value2 === "+value4); } } Bước 2: Chạy mã. Khi đối tượng của lớp con DemoChild được tạo, constructor Demo() của lớp cha được gọi trước và sau đó hàm tạo DemoChild() của lớp con được tạo. Kết quả dự kiến: Inside 1st Parent Constructor Inside the Constructor of Child Value1 === 1 Value2 === 2 Value1 === 3 Value2 === 4 Bước 3: Bạn có thể quan sát hàm tạo của lớp cha Demo bị ghi đè. Điều gì sẽ xảy ra nếu bạn muốn gọi hàm tạo Demo(int a) thay vì hàm tạo mặc định Demo() khi đối tượng của lớp con được tạo? Trong các trường hợp như vậy, bạn có thể sử dụng từ khóa "super" để gọi các hàm tạo bị ghi đè của lớp cha. Cú pháp: super(); --or-- super(parameter list); Ví dụ: Nếu hàm tạo của bạn giống như Demo(String Name,int a), bạn sẽ chỉ định super ("Java", 5) Nếu được sử dụng, từ khóa super được đặt ở dòng mã đầu tiên trong hàm tạo của lớp con. Bước 4: Bỏ chú thích dòng # 26 và chạy mã. Quan sát đầu ra. Đầu ra: Inside 2nd Parent Constructor Inside the Constructor of Child Value1 === 5 Value2 === 0 Value1 === 3 Value2 === 4 Java ProgrammingYou might like
Hiện thêmPost a Comment
Đăng nhận xét
Mới hơn Cũ hơnFollow Us
Chủ Đề Tôi Quan Tâm ;)
- .Net
- .net core
- Agile
- AI
- AngularJS
- Anroid
- AP
- Azure
- BDW
- Bootstrap
- c
- C#
- Cấu Trúc Dữ Liệu và Giải Thuật
- Cloud
- CodeLean
- CSDL
- CSS
- Database
- Design Pattern
- DesignThinking
- DevOps
- Docker
- Git
- github
- HTML
- Hướng_Nghiệp
- Index
- ISA
- Java
- Java1
- Java2
- JavaAdvanced
- JavaCore
- JavaScript
- JSP & Servlet
- Laravel Framework
- Laravel9
- Lập trình C
- Lập trình cho trẻ
- LINQ
- MLJ
- MySQL
- NodeJS
- OOAD
- PHP
- Programming
- Python
- QA
- React Native
- Review Sách
- Spring Boot
- Spring Framework
- SQL
- tản mạn
- Teaching
- Test
- Thiết Kế Website
- Tools
- TypeScript
- Web Development
- WebAPI
Most Popular
Chuẩn hoá dữ liệu là gì? 1NF, 2NF, 3NF & BCNF với các ví dụ
11:57[MySQL 05] Mô hình ER là gì và ví dụ
12:08Tìm Phủ Tối thiểu của một Hàm
12:29Xác định khóa, Tìm phủ tối thiểu, Chuẩn hóa dữ liệu
16:36Big O: Cách tính độ phức tạp của thời gian và không gian
16:37Bắt đầu học Node.js với Visual Studio Code
10:07[Web API] Hướng dẫn từ cơ bản tới nâng cao Web API ASP.NET
19:21[MySQL 02] Hướng dẫn sử dụng MySQL Workbench
11:32Hướng dẫn sửa cấu hình để chạy Dự Án Laravel từ Source Code có sẵn
14:59[JSP & Servlet] Tạo Web Application JSP Servlet Sử dụng JSTL với Tomcat 10 trên IntelliJ
21:27Biểu mẫu liên hệ
Từ khóa » Khởi Tạo Trong Java
-
Java Bài 20: Phương Thức Khởi Tạo - Constructor
-
Phương Thức Khởi Tạo Trong Java | Codelearn
-
Constructor Trong Java - Học Java Miễn Phí Hay Nhất - VietTuts
-
Tất Tần Tật Về Constructor Trong JAVA - NIIT - ICT Hà Nội
-
Khai Báo Hàm Khởi Tạo Trong Java – Constructor Declarations | TopDev
-
Khởi Tạo Biến Trong Java
-
Các Loại Hàm Khởi Tạo (constructor) Của Lớp Trong Java - Góc Học IT
-
Tìm Hiểu Về Hàm Tạo (Constructor) Trong Java
-
Khối Khởi Tạo Thể Hiện Trong JAVA
-
Java: Hàm Tạo (Constructor) | V1Study
-
Java: Bộ Khởi Tạo Cho đối Tượng | V1Study
-
Hàm Tạo Trong Java - Mọi điều Cần Biết Về Hàm Tạo Java
-
Java Constructor - Phương Thức Khởi Tạo Trong Java
-
Các Cách Khởi Tạo đối Tượng Trong Java (Java Constructor)