Chuyển đến nội dung chính
Mô-đun 2 · Bài học 1 trong tổng số 23/14 trong khóa học~12 min
Bài học theo mô-đun (1/2)

Lớp và đối tượng

Java là ngôn ngữ tập trung vào Lập trình hướng đối tượng (OOP). Trong OOP, chúng tôi mô hình hóa thế giới thực bằng cách sử dụng các đối tượng. Một đối tượng có trạng thái (dữ liệu) và hành vi (hành động).

Lớp và đối tượng

  • Lớp: Là một bản thiết kế (hoặc mẫu) xác định các thuộc tính và hành vi của một loại đối tượng.
  • Đối tượng: Đây là một thể hiện cụ thể được tạo từ một lớp.

Ví dụ: nếu Car là lớp thì ô tô của bạn trong gara là đối tượng thực tế.

Trường phiên bản và hàm tạo

Dữ liệu bên trong một lớp được gọi là trường phiên bản (hoặc thuộc tính). Để khởi tạo trạng thái của một đối tượng tại thời điểm tạo ra nó, chúng ta sử dụng một phương thức đặc biệt gọi là hàm tạo.

Hàm khởi tạo có cùng tên với lớp và không có kiểu trả về (thậm chí không có void).

Java
class Dog {
    // Instance fields
    String name;
    int age;

    // Constructor
    public Dog(String name, int age) {
        this.name = name; // 'this' refers to the current object's field
        this.age = age;
    }
}

Tạo một đối tượng với new

Để tạo một đối tượng trong bộ nhớ, chúng ta sử dụng từ khóa new theo sau là hàm tạo lớp:

Java
public class Main {
    public static void main(String[] args) {
        // Creating a Dog object
        Dog myDog = new Dog("Fido", 3);

        // Accessing fields
        System.out.println(myDog.name + " is " + myDog.age + " years old.");
    }
}

Tài liệu tham khảo this

Từ khóa this trong Java đề cập đến đối tượng hiện tại mà hàm tạo hoặc phương thức đang được thực thi trên đó. Nó chủ yếu được sử dụng để tránh sự mơ hồ khi các tham số của hàm tạo có cùng tên với các trường đối tượng của đối tượng (tạo bóng biến):

Java
class User {
    String username;

    public User(String username) {
        this.username = username; // this.username is the instance field, username is the parameter
    }
}

Phân bổ bộ nhớ: Stack vs Heap

Hiểu cách Java phân bổ bộ nhớ là điều cần thiết:

  1. Ngăn xếp: Đây là vùng bộ nhớ nhanh và có tổ chức, nơi lưu trữ các biến nguyên thủy và tham chiếu đối tượng (địa chỉ bộ nhớ) cục bộ của các phương thức.
  2. Heap: Đó là vùng bộ nhớ động và lớn hơn, nơi các đối tượng thực tế được phân bổ (sử dụng từ khóa new).

Khi chúng tôi khai báo Dog myDog = new Dog("Fido", 3);:

  • Tham chiếu myDog được tạo trên Ngăn xếp.
  • Đối tượng Dog thực tế cùng với dữ liệu của nó được tạo trên Heap.
  • Biến myDog trỏ đến vị trí của đối tượng trên Heap.

Hãy tự mình thử

tập thể dục#java.m2.l1.e1
Nỗ lực: 0Đang tải…

Hoàn thành lớp Person bằng cách thêm tên trường và hàm tạo thích hợp. Sau đó, trong phương thức chính, tạo một đối tượng Person có tên p với tên Alice.

Đang tải trình chỉnh sửa…
Hiển thị gợi ý

Viết `String name;` bên trong lớp, khai báo hàm tạo `public Person(String name) { this.name = name; }` và khởi tạo nó bằng `new Person('Alice')`.

Giải pháp khả dụng sau 3 lần thử

tập thể dục#java.m2.l1.e2
Nỗ lực: 0Đang tải…

Tạo một lớp Sách với các trường tiêu đề (Chuỗi) và các trang (int), một hàm tạo hoàn chỉnh và khởi tạo trong phương thức chính một cuốn sách có tên b với tiêu đề Moby Dick và 600 trang.

Đang tải trình chỉnh sửa…
Hiển thị gợi ý

Hãy nhớ xác định cả hai trường trong Sách, ánh xạ chúng trong hàm tạo bằng cách sử dụng `this.title = title;` và `this.pages = pages;` và sử dụng `new Book('Moby Dick', 600)`.

Giải pháp khả dụng sau 3 lần thử

tập thể dục#java.m2.l1.e3
Nỗ lực: 0Đang tải…

Tạo một lớp Sản phẩm với tên trường (Chuỗi) và giá (gấp đôi) và một hàm tạo khởi tạo cả hai trường. Trong phương thức main tạo một đối tượng Product tên p với tên Laptop và giá 999,99.

Đang tải trình chỉnh sửa…
Hiển thị gợi ý

Khai báo các trường `String name;` và `double price;` trong Sản phẩm, gán chúng trong hàm tạo với `this.name = name;` và `this.price = price;`, và cuối cùng tạo đối tượng trong phương thức chính.

Giải pháp khả dụng sau 3 lần thử