Tại sao khi lập trình hướng đối tượng lại có lớp trừu tượng. Tại sao không dùng Class thông thường mà lại phải dùng tới Abstract? Abstract khác gì so với lớp thông thường hay không? Bạn đang thắc mắc những câu hỏi đại loại như thế? Hãy đọc ngay bài viết bên dưới đây.

Lớp trừu tượng (Abstract) trong PHP là gì?

Một lớp trừu tượng là một lớp có chứa ít nhất một phương thức trừu tượng. Trong một phương thức không có bất kỳ mã thực thi nào trong đó, chỉ có tên và các tham số và được đánh dấu là “trừu tượng”.

Mục đích của việc này là cung cấp một loại khuôn mẫu để kế thừa và buộc lớp kế thừa thực hiện các phương thức trừu tượng.

Các đặc điểm của Abstract PHP

1. Không thể khởi tạo lớp trừu tượng : Các lớp được định nghĩa là trừu tượng có thể không được khởi tạo và bất kỳ lớp nào có chứa ít nhất một phương thức trừu tượng cũng phải trừu tượng.

<?php
abstract class ConNguoi
{

    abstract protected function getValue();
    abstract protected function prefixValue($prefix);


    public function sayHello() {
        echo "Hello how are you?";
    }
}

$obj=new ConNguoi();
$obj->sayHello();

//Lỗi
Fatal error: Uncaught Error: Cannot instantiate abstract class ConNguoi in E:\xampp\htdocs\MVCPHP\test.ph

2. Bất kỳ lớp nào cũng chứa ít nhất một phương thức trừu tượng : Lớp trừu tượng có thể có các phương thức trừu tượng và không trừu tượng, nhưng nó phải chứa ít nhất một phương thức trừu tượng. Nếu một lớp có ít nhất một phương thức trừu tượng, thì lớp đó phải được khai báo là trừu tượng.

3. Khi kế thừa từ một lớp trừu tượng, tất cả các phương thức được đánh dấu là trừu tượng trong khai báo của lớp cha phải được xác định bởi lớp con : Nếu bạn kế thừa một lớp trừu tượng, bạn phải cung cấp các triển khai cho tất cả các phương thức trừu tượng trong đó.

4. Lớp trừu tượng không hỗ trợ đa kế thừa : Lớp trừu tượng có thể mở rộng một lớp trừu tượng khác, lớp trừu tượng có thể cung cấp việc triển khai giao diện nhưng nó không hỗ trợ đa kế thừa.

5. Phương thức trừu tượng không thể chứa nội dung: Các phương thức được khai báo dưới dạng trừu tượng chỉ đơn giản khai báo chữ ký của phương thức.

Cách viết sai:

abstract protected function printValue(){
         return "Good morning";
}

Hoặc bạn cũng có thể hiểu ngắn gọn như thế này:

Lớp (Class)
1. Chứa một phương thức trừu tượng
2. Không thể khởi tạo trực tiếp
3. Không thể tạo một đối tượng của lớp trừu tượng
4. Chỉ được sử dụng cho mục đích kế thừa

Phương thức trừu tượng
1. Không thể chứa phần thân
2. Không thể được định nghĩa là private
3. Các lớp con phải định nghĩa các phương thức được khai báo trong lớp trừu tượng.

Ví dụ về trong lớp trừu tượng

<?php
   abstract class Base {
      abstract function printdata();
      public function getdata() {
         echo "Xin chào bạn đến với bài học này";
      }
   }
   class Child extends Base{
      public function printdata(){
         echo "Chào buổi sáng";
      }
   }
   $obj = new child();
   $obj->getdata();
?>

Qua ví dụ trên bạn thấy rằng nó đã thỏa mãn các điều kiện như đã nói ở trong phần đặc điểm lớp trừu tượng.

Nếu muốn tạo đối tượng mới thì cần phải sử dụng kế thừa trong PHP rồi sau đó mới có thể dùng new Class.

Kết luận: Như vậy là bài học này bạn đã hiểu như thế nào là một Abstract và cách sử dụng để không bị lỗi. Hãy liên tục theo dõi các bài viết mới nhất trong chuỗi Series lập trình hướng đối tượng với ngôn ngữ PHP nhé.

Cùng chủ đề

Category:
Tags:

Bình luận!

Xin lưu ý rằng tất cả các bình luận đều được kiểm duyệt theo chính sách bảo mật và tất cả các liên kết đều là nofollow. KHÔNG sử dụng từ khóa trong trường tên. Hãy để lại một cuộc trò chuyện cá nhân và ý nghĩa. *