PHP Abstract Classes

Khái niệm về Abstract Class trong PHP

Trong lập trình hướng đối tượng, một Abstract Class (lớp trừu tượng) là một lớp không thể được khởi tạo trực tiếp và thường được sử dụng như một cơ sở cho các lớp con cụ thể. Điều này cho phép bạn định nghĩa các phương thức mà các lớp con phải triển khai.

Cách định nghĩa Abstract Class

abstract class TenLopTruuTuong {
    // Phương thức trừu tượng, không có thân
    abstract public function tenPhuongThuc();

    // Phương thức bình thường
    public function phuongThucKhac() {
        // Một số mã lệnh
    }
}

Các điểm nổi bật của Abstract Class

  • Không thể khởi tạo trực tiếp một lớp trừu tượng.
  • Có thể chứa các phương thức không trừu tượng (có thân) và phương thức trừu tượng.
  • Phải được kế thừa bởi các lớp cụ thể để có thể sử dụng.

Cách sử dụng Abstract Class

class LopCon extends TenLopTruuTuong {
    // Triển khai phương thức trừu tượng
    public function tenPhuongThuc() {
        // Một số mã lệnh
    }
}

// Tạo đối tượng của lớp con
$doiTuong = new LopCon();
$doiTuong->tenPhuongThuc();

Lợi ích của việc sử dụng Abstract Class

  • Giúp tổ chức mã lệnh rõ ràng và dễ bảo trì.
  • Khuyến khích việc sử dụng lại mã qua kế thừa.
  • Cho phép tạo ra các cấu trúc phức tạp hơn bằng cách định nghĩa các phương thức phổ quát mà chỉ cần phải thực thi trong các lớp con.

Ví dụ thực tế

abstract class Hinh {
    abstract public function tinhDienTich();

    public function inTenHinh() {
        echo "Đây là hình.";
    }
}

class HinhChuNhat extends Hinh {
    private $rong;
    private $cao;

    public function __construct($rong, $cao) {
        $this->rong = $rong;
        $this->cao = $cao;
    }

    public function tinhDienTich() {
        return $this->rong * $this->cao;
    }
}

$hcn = new HinhChuNhat(5, 10);
echo $hcn->tinhDienTich(); // Kết quả: 50

Kết luận

Lớp trừu tượng là một phần quan trọng trong lập trình hướng đối tượng, giúp bạn quản lý và tổ chức mã lệnh tốt hơn. Bằng cách sử dụng lớp trừu tượng, bạn có thể dễ dàng định nghĩa các phương thức chung cho nhiều lớp và đảm bảo rằng các lớp con thực thi chúng theo cách mà bạn mong muốn.