Class trong Java là gì? Object trong Java là gì?

Bài viết được sự cho phép của tác giả Trần Hữu Cương

1. Đối tượng là gì (Object là gì?)

Khoan nói tới lập trình, chúng ta hãy nói tới đối tượng trong đời sống thực tế hàng ngày. Đối tượng là một thực thể vật lý, có thể là một con vật, một đồ vật… Ví dụ như ngôi nhà, cái xe, người…

Mỗi đối tượng sẽ có đặc trưng riêng của nó:

  • Trạng thái của đối tượng: ví dụ cái xe màu gì, bao nhiêu phân khối, giá tiền…
  • Hành vi: các hành động của đối tượng. Ví dụ cái xe có thể chạy, phát tiếng còi, phát ánh đèn…
  • Định danh / nhận diện: là một tính chất giúp các đối tượng phân biệt được với nhau. Các đối tượng có thể nhìn giống nhau không phải là một. Ví dụ hai người sinh đôi nhìn giống hệt nhau nhưng là hai người (đối tượng) riêng biệt.

  Record class trong Java

  Giới thiệu Javascript Proxy object

Trong lập trình hướng đối tượng, các đối tượng trong Java cũng có ba đặc trưng trên:

  • Trạng thái: thể hiện ở giá trị của các biến class (các field của đối tượng)
  • Hành vi: các method/phương thức của class
  • Định danh: Mỗi khi bạn tạo một đối tượng mới thì chúng sẽ được lưu trong bộ nhớ với địa chỉ, kích thước khác nhau. JVM phân biệt được các đối tượng theo các địa chỉ nhớ đó. Nếu bạn thấy có 2 đối tượng A và B có cùng 1 bộ nhớ thì bản chất nó là 1 đối tượng với các tên gọi khác nhau mà thôi (Nếu A thay đổi thì B cũng thay đổi y hệt, ngược lại B thay đổi thì A cũng sẽ thay đổi y hệt).

Chương trình Java được tạo nên từ trạng thái, hành vi và sự tương tác giữa các đối tượng.

Ứng tuyển các vị trí việc làm Java lương cao trên TopDev

2. Class trong Java là gì?

Trong Java nói riêng và trong lập trình hướng đối tượng nói chung thì class được hiểu là một nhóm các đối tượng có các đặc điểm chung.

  • Ví dụ ta tạo class Xe thì có thể hiểu đây là một nhóm các đối tượng có thể dùng làm phương tiện di chuyển…

Class là một mẫu thiết kế, khi thực thi mẫu thiết kế đó ta có được đối tượng.

  • Ví dụ class XeMay gồm các thuộc tính (màu sắc, phân khối, tốc độ…) thì ta có thể hiểu đây là thiết kế của một chiếc XeMay, và khi tạo một chiếc xe máy (object) từ bản thiết kế đó ta sẽ có nhiều lựa chọn khác nhau: màu sắc (màu vàng, màu đen), phân khối (phân khối 100cc, 150cc), tốc độ (100km/h, 80km/h)…

Việc tạo ra các đối tượng phải tuân theo bản thiết kế (class) đã định nghĩa trước đó,

  • Ví dụ class XeMay không được thiết kế với cánh quạt  thì đối tượng được tạo sẽ không thể nào có cánh quạt.

Các bản thiết kế có thể được mở rộng từ các bản thiết kế khác (kế thừa):

  • Ví dụ đầu tiên người ta tạo thiết kế nhà gồm các chi tiết (cửa sổ, cửa ra vào, mái nhà, tường, chân móng). Sau đấy người ta tạo ra bản thiết kế biệt thự dựa theo bản thiết kế nhà nhưng thêm các chi tiết khác như bể bơi, hàng rào… Các bản thiết kế con có thể sử dụng lại toàn bộ các chi tiết của bản thiết kế cha hoặc chỉ sử dụng lại một phần (tương đương với access modifier của các biến)

3. Các thành phần của class trong Java

Trong Java, để tạo một class ta sử dụng từ khóa class, mỗi class có thể có các thành phần sau:

  • Các thuộc tính (các fields/ biến instance): chứa trạng thái của các đối tượng (object) được tạo ra
  • Các method – phương thức: mô tả các hành vi của đối tượng được tạo ra
  • Hàm khởi tạo (hành động thực thi bản thiết kế để tạo ra đối tượng): bản chất cũng là một method, được dùng để tạo ra đối tượng. Hàm khởi tạo chứa các tham số để thiết lập giá trị mặc định cho các thuộc tính gọi là hàm khởi tạo có tham số (mặc định nếu không khai báo hàm khởi tạo thì ta hiểu nó có hàm khởi tạo không tham số).
  • Các block code: các đoạn code được thực thi ngay khi đối tượng được khởi tạo.
  • Nested class

Ví dụ ta có class Person:

public class Person {

  // block code (khối code)
  {
    System.out.println("run block code");
  }

  // instance variable - field
  String name;


  // method (phương thức)
  public void hello() {
    System.out.println(name);
  }

  // hàm khởi tạo không có tham số
  public Person() {
  }

  // hàm khởi tạo có tham số
  public Person(String name) {
    this.name = name;
  }


  // nested class
  class NestedClass{}

}

4. Tạo đối tượng trong Java

Cách khởi tạo đối tượng đơn giản nhất là dùng từ khóa new

Ví dụ, với class Person như ở trên, ta có thể tạo đối tượng bằng lệnh new Person();

Ngoài dùng từ khóa new thì ta còn một số phương pháp khác để tạo đối tượng như áp dụng reflection, deserialization, clone. Tuy nhiên mấy cách sau sẽ hơi khó hiểu với những người bắt đầu nên mình sẽ giới thiệu ở một bài riêng.

Bài viết gốc được đăng tải tại stackjava.com

Bạn có thể quan tâm:

Xem thêm các việc làm công nghệ hấp dẫn trên TopDev