Quangkhoi1228 | Knowledge base
  • Về trang chủ
  • Lời nói đầu
  • Nhập môn lập trình web
    • Giáo trình
    • Class 01: Hello HTML!!!
    • Class 02: HTML: Comment, Text formatting, Attribute, Link
    • Class 03: HTML: Style, Inline/Block element, Image
    • Class 04: HTML: List, Table, Responsive
    • Class 05: Hello CSS!!!
    • Class 06: CSS: Flexbox, Layout
    • Class 07: Hello Javascript!!!
    • Class 08: JS: Operator, Expression, For/While Loop, Function
    • Class 09: JS: Search Function
    • Project 1: Layout Structure
    • Project 2: Search Function
    • Project 3: MVP
    • Review "Lập trình Frontend Website"
  • Lập trình Frontend Website
    • Class 01: Ôn tập HTML
    • Class 02: Thảo luận HTML
    • Class 03: Ôn tập CSS
    • Class 04: Chrome dev tools, CSS Box Model
    • Class 05: CSS: Position, Đơn vị đo
    • Class 06: CSS: hiệu ứng, responsive
    • Class 07: Thảo luận CSS
    • Class 08: Ôn tập JS
    • Class 09: JS: Mảng, Đối tượng, Biến tham chiếu và tham trị
    • Class 10: JS: Class, Pair programming
    • Class 11: JS: DOM, UI Rendering
  • Lập trình ReactJS
    • Class 01: Giới thiệu ReactJS
    • Class 01: Tạo dự án ReactJS mới
    • Class 02: ReactJS Component
    • Class 02: Import/Export component
    • Class 03: useState hook
    • Class 04: Project 1: UI cơ bản
    • Class 05: Render có điều kiện và danh sách
    • Class 06: useEffect hook
    • Class 07: Project 2: Xử lý user logic
    • Class 08: Project 3: Hoàn thiện dashboard
    • Class 09: Form và dữ liệu người dùng
    • Class 10: UseRef và thao tác với DOM
    • Class 11: Project 4: Xử lý form data
    • Class 12: Project 5: Hoàn thiện form data
    • Class 13: useMemo và useCallback
    • Class 14: Custom Hook
    • Class 15: Project 6: Hoàn thiện project
    • Class 16: Ôn tập
  • Lập trình NestJS
    • Class 01: Giới thiệu NestJS & Cài đặt dự án
    • Class 02: Routing, Controller và Dependency Injection
    • Class 03: Service và Data Validation
    • Class 04: Kết nối Database với TypeORM
    • Class 05: Quan hệ trong Database (OneToMany, ManyToOne) với TypeORM
    • Class 06: Middleware, Interceptor, Guard
    • Class 07: Authentication – JWT
    • Class 08: Authorization – Phân quyền
    • Class 09: File Upload & Configuration
    • Class 10: Giới thiệu WebSocket
    • Class 11: Project 1
    • Class 12: Project 2
    • Class 13: Project 3
    • Class 14: Project 4
    • Class 15: Project 5
    • Class 16: Project 6
  • Lập trình Java cơ bản
    • Class 01: Khai giảng
    • Class 02: Hello Java
    • Class 03: Biến và kiểu dữ liệu
    • Class 04: Toán tử và biểu thức
    • Class 05: Câu lệnh điều kiện
    • Class 06: Review 1
    • Class 07: Vòng lặp For
    • Class 08: Vòng lặp While / Do-while
    • Class 09: Java Method
    • Class 10: Review 2
    • Class 11: Java User Input
    • Class 12: Java File
    • Class 13: Final Exam 1
    • Class 14: Final Exam 2
    • Review "Lập trình OOP với Java"
  • Lập trình OOP với Java
    • Class 01: Hello OOP
    • Class 02: Class Attribute và Method
    • Class 03: Constructor, Modifier và Package
    • Class 04: Review 1
    • Class 05: Tính kế thừa và đa hình
    • Class 06: Tính trừu tượng và đóng gói
    • Class 07: Review 2
    • Class 08: Final Exam 1
    • Class 09: Final Exam 2
    • Review "CTDL và Giải thuật với Java"
  • CTDL và Giải thuật với Java
    • Class 01: Hello Data Structure
  • HTML
    • Cài đặt công cụ cơ bản
    • HTML là gì?
    • Phần tử HTML
    • Cấu trúc file HTML cơ bản
    • Comment trong HTML
    • Format văn bản trong HTML
    • Thuộc tính HTML
    • Liên kết(link) trong HTML
    • Project: Professional Email
    • HTML Style
    • Phần tử Inline và Block
    • HTML Image
    • HTML List
    • HTML Table
    • Head trong HTML
    • HTML Responsive
    • Project: Online Cover Letter
  • CSS
    • Giới thiệu CSS
    • CSS Selector
    • Thêm CSS vào trang
    • Comment trong CSS
    • Màu sắc trong CSS
    • CSS Background
    • CSS Border
    • CSS Spacing
    • CSS Flexbox
    • HTML Layout
    • Chrome dev tools
    • CSS Box Model
    • CSS Position
    • Đơn vị đo trong CSS
    • CSS Pseudo-classes
    • CSS Responsive
  • JavaScript
    • Giới thiệu Javascript
    • Thêm JS vào trang
    • Các hàm có sẵn
    • Biến và kiểu dữ liệu
    • JS Mảng
    • JS Đối tượng
    • JS Biến Tham Chiếu và Tham Trị
    • Toán tử và biểu thức
    • Câu lệnh điều kiện
    • Vòng lặp For / While
    • Hàm (Function)
    • Chức năng tìm kiếm với JS và DOM
    • JS Class
    • JS DOM
    • JS Dom Rendering
  • Java
    • Giới thiệu Java
    • Chương trình Hello world
    • Phân biệt JVM, JRE, JDK
    • Java Comment
    • Biến trong Java
    • Kiểu dữ liệu trong Java
    • Java Array
    • Toán tử trong Java
    • Biễu thức trong Java
    • Java If-else
    • Java Switch
    • Vòng lặp For trong Java
    • Vòng lặp While trong Java
    • Vòng lặp Do-while trong Java
    • Java Method
    • Java OOP
    • Java Class và Object
    • Java Class attribute
    • Java Class method
    • Java Constructor
    • Java Modifier
    • Java Package
    • Java Tính kế thừa
    • Java Tính đa hình
    • Java Tính trừu tượng
    • Java Tính đóng gói
    • Java User Input
    • Java File
  • Soft skills
    • Pair Programming
  • Web design and wireframe
  • NextJS
    • Tạo dự án NextJS mới
  • NestJS
    • Giới thiệu NestJS
    • NestJS controller
    • NestJS module
  • Git
    • Setup SSH key với GitHub
  • Bash
    • Giới thiệu Bash/Shell Script
  • Wordpress
    • Thêm custom routes
    • Deploy with ubuntu
  • Deployment
    • SSH server, đổi password và add SSH key
    • Tạo user mới và add SSH key
    • Page
  • GitBook
    • Custom domain with CloudFlare
  • Hướng dẫn khác
    • Gitbook custom domain with Cloudflare
    • Cấu hình OpenVPN
    • Cấu hình và lấy SSH key
    • Công cụ lập trình
      • Visual Studio Code
      • Cài đặt IntelliJ IDEA
    • Đường dẫn file trong HTML
    • CI/CD github action
  • Project: CV online
Powered by GitBook
On this page
  • Java Constructor
  • Khai báo Constructor
  • Constructor Mặc Định
  • Constructor Overloading
  • Bài tập thực hành
  • Tạo lớp Person
  • Tạo lớp BankAccount
  • Bài tập thêm
  1. Java

Java Constructor

Java Constructor

Trong lập trình Java, constructor (hàm dựng) là một phương thức đặc biệt được sử dụng để khởi tạo đối tượng của lớp. Constructor có cùng tên với lớp và không có kiểu trả về, kể cả void.

Khai báo Constructor

Khi bạn tạo một đối tượng từ lớp, constructor sẽ được gọi để khởi tạo các giá trị cho các thuộc tính của đối tượng đó.

Cú pháp:

class ClassName {
    // Constructor
    ClassName(parameterList) {
        // body of constructor
    }
}
  • ClassName: Là tên của lớp.

  • parameterList: Là danh sách các tham số mà constructor nhận vào (có thể rỗng).

Ví dụ:

public class Car {
    private String color;
    private int maxSpeed;

    // Constructor
    public Car(String color, int maxSpeed) {
        this.color = color;
        this.maxSpeed = maxSpeed;
    }

    // Phương thức để hiển thị thông tin của ô tô
    public void displayInfo() {
        System.out.println("Color: " + color);
        System.out.println("Max Speed: " + maxSpeed + " km/h");
    }
}

public class Main {
    public static void main(String[] args) {
        // Tạo một đối tượng ô tô từ lớp Car
        Car myCar = new Car("Red", 200);
        
        // Gọi phương thức hiển thị thông tin của ô tô
        myCar.displayInfo();
    }
}

Trong ví dụ trên, lớp Car có một constructor nhận hai tham số color và maxSpeed. Khi tạo một đối tượng Car, constructor này sẽ được gọi để khởi tạo các giá trị cho các thuộc tính của đối tượng.

Constructor Mặc Định

Nếu bạn không định nghĩa constructor nào cho lớp, Java sẽ tự động tạo ra một constructor mặc định không tham số. Constructor này sẽ không làm gì cả và các thuộc tính của đối tượng sẽ được khởi tạo với giá trị mặc định của chúng (0, null, false, v.v.).

Ví dụ:

public class Dog {
    private String name;
    private int age;

    // Constructor mặc định do Java tự động tạo
    public Dog() {
    }

    // Phương thức để hiển thị thông tin của chó
    public void displayInfo() {
        System.out.println("Name: " + name);
        System.out.println("Age: " + age + " years");
    }
}

public class Main {
    public static void main(String[] args) {
        // Tạo một đối tượng chó từ lớp Dog
        Dog myDog = new Dog();
        
        // Gọi phương thức hiển thị thông tin của chó
        myDog.displayInfo();
    }
}

Trong ví dụ trên, mặc dù không định nghĩa constructor nào cho lớp Dog, Java vẫn tạo ra một constructor mặc định không tham số.

Constructor Overloading

Constructor overloading là khả năng của một lớp để có nhiều constructor với các tham số khác nhau. Điều này cho phép bạn khởi tạo đối tượng theo nhiều cách khác nhau.

Ví dụ:

public class Rectangle {
    private double length;
    private double width;

    // Constructor không tham số
    public Rectangle() {
        this.length = 1.0;
        this.width = 1.0;
    }

    // Constructor với một tham số
    public Rectangle(double side) {
        this.length = side;
        this.width = side;
    }

    // Constructor với hai tham số
    public Rectangle(double length, double width) {
        this.length = length;
        this.width = width;
    }

    // Phương thức để tính diện tích hình chữ nhật
    public double calculateArea() {
        return length * width;
    }

    // Phương thức để hiển thị thông tin của hình chữ nhật
    public void displayInfo() {
        System.out.println("Length: " + length);
        System.out.println("Width: " + width);
        System.out.println("Area: " + calculateArea());
    }
}

public class Main {
    public static void main(String[] args) {
        // Tạo các đối tượng hình chữ nhật từ lớp Rectangle
        Rectangle rect1 = new Rectangle();
        Rectangle rect2 = new Rectangle(5.0);
        Rectangle rect3 = new Rectangle(4.0, 6.0);
        
        // Gọi phương thức hiển thị thông tin của hình chữ nhật
        rect1.displayInfo();
        rect2.displayInfo();
        rect3.displayInfo();
    }
}

Trong ví dụ trên, lớp Rectangle có ba constructor với các tham số khác nhau. Điều này cho phép bạn tạo đối tượng Rectangle theo nhiều cách khác nhau.

Bài tập thực hành

Tạo lớp Person

  • Tạo một lớp Person với các thuộc tính name (tên) và age (tuổi).

  • Cung cấp ba constructor: constructor mặc định, constructor với một tham số name, và constructor với hai tham số name và age.

  • Viết thêm phương thức displayInfo để hiển thị thông tin của người.

Bài giải
public class Person {
    private String name;
    private int age;

    // Constructor mặc định
    public Person() {
        this.name = "Unknown";
        this.age = 0;
    }

    // Constructor với một tham số
    public Person(String name) {
        this.name = name;
        this.age = 0;
    }

    // Constructor với hai tham số
    public Person(String name, int age) {
        this.name = name;
        this.age = age;
    }

    // Phương thức để hiển thị thông tin của người
    public void displayInfo() {
        System.out.println("Name: " + name);
        System.out.println("Age: " + age + " years");
    }
}

public class Main {
    public static void main(String[] args) {
        // Tạo các đối tượng từ lớp Person
        Person person1 = new Person();
        Person person2 = new Person("Alice");
        Person person3 = new Person("Bob", 25);
        
        // Gọi phương thức hiển thị thông tin của người
        person1.displayInfo();
        person2.displayInfo();
        person3.displayInfo();
    }
}

Tạo lớp BankAccount

  • Tạo một lớp BankAccount với các thuộc tính accountNumber (số tài khoản) và balance (số dư).

  • Cung cấp ba constructor: constructor mặc định, constructor với một tham số accountNumber, và constructor với hai tham số accountNumber và balance.

  • Viết thêm phương thức displayInfo để hiển thị thông tin của tài khoản.

Bài giải
public class BankAccount {
    private String accountNumber;
    private double balance;

    // Constructor mặc định
    public BankAccount() {
        this.accountNumber = "000000";
        this.balance = 0.0;
    }

    // Constructor với một tham số
    public BankAccount(String accountNumber) {
        this.accountNumber = accountNumber;
        this.balance = 0.0;
    }

    // Constructor với hai tham số
    public BankAccount(String accountNumber, double balance) {
        this.accountNumber = accountNumber;
        this.balance = balance;
    }

    // Phương thức để hiển thị thông tin của tài khoản
    public void displayInfo() {
        System.out.println("Account Number: " + accountNumber);
        System.out.println("Balance: $" + balance);
    }
}

public class Main {
    public static void main(String[] args) {
        // Tạo các đối tượng từ lớp BankAccount
        BankAccount account1 = new BankAccount();
        BankAccount account2 = new BankAccount("123456");
        BankAccount account3 = new BankAccount("789012", 1000.0);
        
        // Gọi phương thức hiển thị thông tin của tài khoản
        account1.displayInfo();
        account2.displayInfo();
        account3.displayInfo();
    }
}

Bài tập thêm

  • Tạo thêm một số đối tượng từ các lớp Person và BankAccount, sau đó hiển thị thông tin của từng đối tượng.

  • Thử thay đổi giá trị của các thuộc tính thông qua constructor và kiểm tra kết quả.

Hãy thực hiện các bài tập để làm quen với việc sử dụng constructor trong Java.

PreviousJava Class methodNextJava Modifier

Last updated 1 year ago