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

3 minute read

II. Lập trình hướng đối tượng trong Java:

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

  1. Lớp trong Java:

    • Trong Java, một lớp là một mô hình, mẫu hoặc bản thiết kế để tạo ra các đối tượng.
    • Mỗi lớp đều có trường (fields) và phương thức (methods).
    • Cú pháp khai báo lớp:
      1
      2
      3
      4
      
      <phạm vi truy cập> class <tên lớp> {
          // Trường (biến)
          // Phương thức (hàm)
      }
      
    • Ví dụ:
       1
       2
       3
       4
       5
       6
       7
       8
       9
      10
      
      public class Car {
          // Trường (biến)
          String brand;
          int year;
      
          // Phương thức (hàm)
          void startEngine() {
              System.out.println("Engine started");
          }
      }
      
  2. Đối tượng trong Java:

    • Một đối tượng là một thể hiện của một lớp.
    • Khi một đối tượng được tạo, nó sẽ có trạng thái và hành vi, được xác định bởi các trường và phương thức của lớp.
    • Cú pháp tạo đối tượng:
      1
      
      <tên lớp> <tên đối tượng> = new <tên lớp>();
      
    • Ví dụ:
      1
      
      Car myCar = new Car();
      
  3. Trường và Phương thức:

    • Trường (fields): Đại diện cho các thuộc tính hoặc dữ liệu của một đối tượng. Mỗi đối tượng có một bản sao của các trường của lớp.
    • Phương thức (methods): Đại diện cho hành vi hoặc các hàm mà đối tượng có thể thực hiện. Chúng có thể được sử dụng để thay đổi trạng thái của đối tượng hoặc trả về một giá trị.
  4. Ví dụ:

     1
     2
     3
     4
     5
     6
     7
     8
     9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
    24
    25
    26
    27
    
    public class Car {
        // Trường (biến)
        String brand;
        int year;
    
        // Phương thức (hàm)
        void startEngine() {
            System.out.println("Engine started");
        }
    
        void drive(int distance) {
            System.out.println("Driving for " + distance + " kilometers");
        }
    
        public static void main(String[] args) {
            // Tạo một đối tượng Car
            Car myCar = new Car();
    
            // Gán giá trị cho các trường
            myCar.brand = "Toyota";
            myCar.year = 2020;
    
            // Gọi phương thức
            myCar.startEngine();
            myCar.drive(100);
        }
    }
    

    Trong ví dụ này, chúng ta định nghĩa một lớp Car với các trường brandyear, cùng với hai phương thức startEngine()drive(). Chúng ta tạo một đối tượng myCar từ lớp Car, gán giá trị cho các trường và gọi các phương thức của đối tượng này.

  5. Tính kế thừa:

Kế thừa là một trong những tính năng quan trọng nhất của lập trình hướng đối tượng trong Java. Nó cho phép một lớp mới (gọi là lớp con) kế thừa các thuộc tính và phương thức của một lớp hiện có (gọi là lớp cha hoặc lớp cơ sở). Lớp con có thể sử dụng lại các tính năng của lớp cha, và cũng có thể mở rộng hoặc ghi đè (override) chúng để thêm hoặc thay đổi hành vi theo nhu cầu của mình.

Cú pháp kế thừa:

Trong Java, để kế thừa từ một lớp cha, chúng ta sử dụng từ khóa extends.

1
2
3
class Subclass extends Superclass {
    // Các thuộc tính và phương thức của lớp con
}

Ví dụ:

 1
 2
 3
 4
 5
 6
 7
 8
 9
10
11
12
13
14
15
16
17
18
19
20
21
// Lớp cha (Superclass)
class Animal {
    void eat() {
        System.out.println("Eating...");
    }
}

// Lớp con (Subclass) kế thừa từ lớp cha Animal
class Dog extends Animal {
    void bark() {
        System.out.println("Barking...");
    }
}

public class Main {
    public static void main(String[] args) {
        Dog dog = new Dog();
        dog.eat();  // Kế thừa từ lớp cha
        dog.bark(); // Phương thức của lớp con
    }
}

Trong ví dụ này:

  • Lớp Animal là lớp cha có một phương thức eat().
  • Lớp Dog là lớp con kế thừa từ lớp Animal và mở rộng chức năng bằng cách thêm một phương thức mới bark().
  • Trong phương thức main(), chúng ta tạo một đối tượng Dog và gọi cả hai phương thức eat()bark(). Phương thức eat() được kế thừa từ lớp cha Animal, trong khi bark() là phương thức của lớp con Dog.

Kế thừa trong Java giúp tái sử dụng mã và giảm sự lặp lại, cũng như tăng tính linh hoạt và bảo trì trong quá trình phát triển ứng dụng.