VieTopik
Tiếng HànTiếng Anh.NET (C#)Java
  • Góc học tập
Tải app
  • Thư viện
  • Luyện thi
  • Cẩm nang
  • Góc học tập
Java CoreClass cơ bản
Bài 10/19
4 phút

Class và object

Nội dung bài · 5 mục
  1. 1.Khái niệm
  2. 2.Ví dụ
  3. 3.Thử ngay
  4. 4.Lỗi hay gặp
  5. 5.Tóm tắt

Tới giờ bạn mới dùng các kiểu có sẵn như int, String, List. Nhưng một sản phẩm trong cửa hàng có cả tên, giá và cách tính tiền, không kiểu có sẵn nào chứa hết được. Bài này hướng dẫn bạn tự tạo kiểu riêng bằng class.

Khái niệm

📐 Class: kiểu dữ liệu do bạn tự định nghĩa, gom dữ liệu và hành vi liên quan vào một chỗ.

🧊 Object: một giá trị cụ thể được tạo ra từ class bằng từ khoá new.

📎 Field: biến khai báo bên trong class, mỗi object giữ một bản riêng.

Class chỉ là phần mô tả. Muốn dùng thì phải tạo object từ nó, và từ một class tạo bao nhiêu object cũng được.

Ví dụ

// Main.java
void main() {
    var pen = new Product();
    pen.name = "Bút bi";
    pen.price = 5000;

    System.out.println(pen.totalFor(2)); // 10000
}

// Product.java
class Product {
    public String name = "";   // mặc định là chuỗi rỗng
    public long price;

    public long totalFor(int quantity) {
        return price * quantity;
    }
}
  • Mỗi class nằm trong một file riêng trùng tên class, đặt cạnh Main.java. Lệnh java Main.java tự biên dịch các class mà nó dùng.
  • class Product khai báo hai field (name, price) và một method (totalFor).
  • public cho phép code bên ngoài class dùng field và method đó.
  • new Product() tạo một object, biến pen giữ object đó.
  • Dùng dấu chấm để truy cập field và method của object: pen.price, pen.totalFor(2). Bên trong totalFor, price chính là giá của pen.

Thử ngay

Giữ nguyên Product.java, thay nội dung Main.java bằng đoạn sau rồi chạy java Main.java:

// Main.java
void main() {
    var pen = new Product();
    pen.name = "Bút bi";
    pen.price = 5000;

    var notebook = new Product();
    notebook.name = "Vở";
    notebook.price = 12000;

    pen.price = 6000;

    System.out.println(pen.name + ": " + pen.price);
    System.out.println(
            notebook.name + ": " + notebook.price);
}

Đoán trước khi chạy: đổi giá pen thành 6000 thì giá notebook có đổi theo không?

Xem kết quả
Bút bi: 6000
Vở: 12000

Không đổi. pen và notebook là hai object riêng, mỗi object giữ price của mình.

Lỗi hay gặp

Khai báo biến nhưng quên new. Biến chưa được gán object nào nên không dùng được.

// SAI — lỗi compile: pen chưa được gán
Product pen;
pen.price = 5000;
// ĐÚNG — tạo object trước rồi mới dùng
var pen = new Product();
pen.price = 5000;

Tóm tắt

  • Class mô tả dữ liệu (field) và hành vi (method).
  • new tạo object từ class, mỗi object giữ field riêng.
  • Dùng dấu chấm để truy cập field và method: pen.price, pen.totalFor(2).

Tự kiểm tra

0/3 câu
Câu 1

Class Customer có field public String name = "". Chạy: var a = new Customer(); var b = new Customer(); a.name = "An"; System.out.println(b.name); In ra gì?

Câu 2

Trong dòng var cart = new Cart(); thì Cart và cart lần lượt là gì?

Câu 3

Field khác biến khai báo bên trong method ở điểm nào?

MapGetter, setter và constructor

Nội dung bài

  1. 1.Khái niệm
  2. 2.Ví dụ
  3. 3.Thử ngay
  4. 4.Lỗi hay gặp
  5. 5.Tóm tắt