Lớp trừu tượng (Abstract) trong PHP

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:xampphtdocsMVCPHPtest.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é.

Related Posts

Namespace trong PHP

Namespace cho phép các lớp / hàm / hằng cùng tên được sử dụng trong các ngữ cảnh khác nhau mà không có bất kỳ xung đột…

Hàm str_split() trong PHP

Bài viết này chúng ta sẽ đi tìm hiểu về hàm str_split(). Một trong những hàm thường được dùng trong PHP. Vậy cách sử dụng str_split() như…

Tạo chức năng sửa xoá thành viên bằng PHP & MySQL

Với một số trang web để quản lý thành viên (user) dễ dàng trong phần quản trị admin bạn phải khởi tạo chức năng sửa xoá thành…

Hàm str_replace trong PHP

Hàm str_replace trong PHP là gì? Hàm str_replace() trong PHP là một hàm được sử dụng để thay thế tất cả các xuất hiện của một chuỗi…

laravel8-vews-1

Views trong Laravel 8

Trong chuỗi series hướng dẫn học Laravel thì Views cũng quan trọng không kém gì so với Controller hay Model. Vậy chúng ta sẽ làm thế nào…

Validate Form trong PHP

Mặc dù trình duyệt hỗ trợ JavaScript để xác thực người dùng cho website. Tuy nhiên nếu JavaScript bị lỗi hoặc tắt đi thì công việc này…