Chúng ta có thể tạo đối tượng lớp trừu tượng trong PHP không?

Tiếp tục đọc để tìm hiểu cách hoạt động của tính trừu tượng của lớp PHP, cách sử dụng các phương thức trừu tượng và tất cả các quy tắc trừu tượng mà bạn cần biết

nội dung


Các lớp trừu tượng PHP là gì?

Ý tưởng về một “lớp trừu tượng” có thể gây nhầm lẫn

Vì vậy, hãy bắt đầu bằng cách làm rõ các lớp trừu tượng thực sự là gì

Một lớp tiêu chuẩn giống như một tờ hướng dẫn cho PHP
Khi bạn tạo một đối tượng của lớp đó, PHP sẽ làm theo hướng dẫn và tạo đối tượng

Ví dụ: bạn có thể viết một lớp “Máy tính” với các thuộc tính như loại CPU, bộ nhớ và mức tiêu thụ năng lượng cũng như với các phương thức như bật, tắt và chờ

Lớp này cung cấp mọi thứ cần thiết để tạo một đối tượng Máy tính, bởi vì tất cả các thuộc tính và phương thức đều được xác định rõ ràng.

Mặt khác, một lớp trừu tượng giống như một bảng yêu cầu. Nó cho biết một đối tượng phải có những gì, nhưng nó không cung cấp đủ thông tin để thực sự tạo đối tượng

Ví dụ: bạn có thể viết một lớp trừu tượng có tên là “Điện tử” đại diện cho một thiết bị điện chung

Lớp này định nghĩa một số thuộc tính và phương thức cần thiết, chẳng hạn như thuộc tính tiêu thụ năng lượng và các phương thức bật/tắt

Tuy nhiên, nó không cung cấp đủ thông tin để tạo một đối tượng

Hãy tưởng tượng nếu ai đó yêu cầu bạn vẽ một thiết bị điện. Nó quá… trừu tượng, phải không? . “chính xác là loại thiết bị điện nào?”

Và đó chính xác là những gì xảy ra với các lớp trừu tượng

Bạn không thể tạo một đối tượng của lớp trừu tượng, nhưng trước tiên bạn phải tạo một lớp con hoàn thành lớp trừu tượng bằng cách thực hiện các yêu cầu của lớp trừu tượng

Lớp chuẩnLớp trừu tượngĐịnh nghĩa đầy đủ các thuộc tính và phương thứcChỉ cho biết các thuộc tính và phương thức cần thiếtCó thể tạo một đối tượng của lớp nàyKhông thể tạo một đối tượng của lớp này

Bây giờ, hãy xem cách nó hoạt động trong PHP


Từ khóa PHP trừu tượng .

Để nói với PHP rằng một lớp là một lớp trừu tượng, bạn cần sử dụng từ khóa trừu tượng như thế này


abstract class Electronic
{
   public $pwrConsumption;
   //...
}

Lớp điện tử được định nghĩa là trừu tượng

Bạn không thể tạo các đối tượng của lớp này mà phải tạo một lớp con trước

Bạn cũng có thể thêm các phương thức trừu tượng vào lớp

Một phương thức trừu tượng là một phương thức lớp chỉ xác định chữ ký của phương thức, không có phần thân

Như thế này


abstract class Electronic
{
   public $pwrConsumption;
   
   abstract public function turnOn();
   abstract public function turnOff();
}

Nhớ. các phương thức trừu tượng không có phần thân, trong khi các phương thức không trừu tượng phải có phần thân

Một lớp chứa ít nhất một phương thức trừu tượng, phải là một lớp trừu tượng

Vì vậy, sau đây là một lỗi vì không có từ khóa trừu tượng trước lớp


class MyClass
{
   abstract public function myMethod();
}

Mặt khác, bạn có thể định nghĩa một lớp là trừu tượng ngay cả khi nó không chứa bất kỳ phương thức trừu tượng nào hoặc bất kỳ phương thức nào.

Đơn giản thôi. bất kỳ lớp nào cũng có thể trừu tượng. Nhưng nếu có ít nhất một phương thức trừu tượng, thì lớp đó phải trừu tượng

Vai trò của các phương thức trừu tượng là đặt ra yêu cầu cho các lớp con

Khi bạn tạo một lớp con, bạn phải ghi đè các phương thức trừu tượng của lớp cha và tạo cho chúng một phần thân.

Nói cách khác, các phương thức trừu tượng buộc các lớp con phải thực hiện các phương thức đó mà không cần lớp cơ sở thực hiện nó.

Ví dụ


abstract class MyClass
{
   abstract public function myMethod();
}
class ConcreteClass extends MyClass
{
   public function myMethod() {
      echo "Hello";
   }
}

Tóm lại, đây là những quy tắc bạn cần nhớ

  • Nếu một lớp trừu tượng, bạn không thể tạo một đối tượng của lớp đó
  • Các phương thức trừu tượng chỉ xác định chữ ký của phương thức, không có phần thân
  • Nếu một lớp có ít nhất một phương thức trừu tượng, thì lớp đó cũng phải trừu tượng
  • Khi bạn định nghĩa một lớp con của một lớp trừu tượng, bạn phải viết phần thân của tất cả các phương thức trừu tượng của lớp cha

Bạn có thể tìm thấy tất cả các quy tắc trừu tượng PHP tại đây

Khi nào sử dụng trừu tượng hóa lớp

Bây giờ bạn có thể hỏi. tại sao bạn cần các lớp trừu tượng ngay từ đầu?

Hãy nghĩ về cách thức hoạt động của kế thừa OOP

Bạn có một lớp chung, và sau đó bạn có thể viết các lớp con là phiên bản cụ thể của lớp cơ sở

Khi bạn có một đoạn mã hoạt động với các đối tượng của lớp cơ sở, đoạn mã này cũng hoạt động với các đối tượng của lớp con

Đây là một ví dụ được lấy từ hướng dẫn kế thừa lớp học của tôi


class Bird
{
   public $wingspan;
   public $colors;
}
class Parrot extends Bird
{
}
function watchBird(Bird $bird)
{
   echo 'Here is a bird!';
}
$bird = new Bird();
watchBird($bird);
$parrot = new Parrot();
watchBird($parrot); /* This works just fine. */

Ok, bây giờ hãy xem một ví dụ khác

Giả sử bạn đang xây dựng một ứng dụng lưu trữ kho hàng. Trong nhà kho này, hàng hóa được đựng trong ba loại hộp. hộp gỗ, hộp nhựa và hộp kim loại. Vì vậy, bạn viết một lớp PHP cho từng loại hộp. Hộp Gỗ, Hộp Nhựa và Hộp Kim Loại

Các lớp này có các thuộc tính chung như trọng lượng, kích thước, danh sách các mục, v.v. Ví dụ


class WoodenBox
{
   public $length;
   public $width;
   public $height;
   //...
}
class PlasticBox
{
   public $length;
   public $width;
   public $height;
   //...
}
class MetalBox
{
   public $length;
   public $width;
   public $height;
   //...
}

Chúng ta có thể tạo đối tượng lớp trừu tượng trong PHP không?
Chúng ta có thể tạo đối tượng lớp trừu tượng trong PHP không?

Bạn có thể thấy việc viết một lớp cơ sở chung để nhóm tất cả các thuộc tính và phương thức chung là hợp lý như thế nào

Hãy gọi lớp cơ sở này là Hộp


class Box
{
   public $length;
   public $width;
   public $height;
   //...
}
class WoodenBox extends Box
{
   //...
}
class PlasticBox extends Box
{
   //...
}
class MetalBox extends Box
{
   //...
}

Bây giờ bạn đã có một lớp cơ sở chung, bạn có thể viết mã PHP hoạt động với bất kỳ đối tượng lớp con Box nào, như thế này


function getVolume(Box $myBox)
{
   $volume = $myBox->length * $myBox->width * $myBox->heigh;
   return $volume;
}
$woodenBox = new WoodenBox();
echo getVolume($woodenBox);
$plasticBox = new PlasticBox();
echo getVolume($plasticBox);
$metalBox = new MetalBox();
echo getVolume($metalBox);

Chúng ta có thể tạo đối tượng lớp trừu tượng trong PHP không?
Chúng ta có thể tạo đối tượng lớp trừu tượng trong PHP không?

Nhưng đây là điều

Không có thứ gọi là hộp “chung chung” trong kho hàng của bạn

Vì vậy, mặc dù có thể nhóm ba loại hộp vào một lớp Hộp chung, nhưng sẽ không hợp lý nếu có các đối tượng của lớp Hộp, bởi vì không có hộp “chung” nào tồn tại trong kho của bạn

Nói cách khác, bạn muốn mọi đối tượng Hộp là Hộp gỗ, Hộp nhựa hoặc Hộp kim loại

Điều này được thực hiện bằng cách định nghĩa lớp Box là trừu tượng

Tạo hộp trừu tượng ngăn bạn tạo các đối tượng Hộp chung, nhưng vẫn cho phép bạn giữ tất cả các lợi thế của kế thừa lớp

________số 8_______

Chúng ta có thể tạo đối tượng lớp trừu tượng trong PHP không?
Chúng ta có thể tạo đối tượng lớp trừu tượng trong PHP không?

Kế thừa từ các lớp trừu tượng

Kế thừa từ một lớp trừu tượng tuân theo các quy tắc giống như kế thừa lớp bình thường

  • Khả năng hiển thị của các phương thức của con phải giống như của cha mẹ hoặc ít bị hạn chế hơn
  • Các đối số của phương thức con phải tương thích với các phương thức của lớp cơ sở (ngoại trừ hàm tạo)

Trên hết, có hai quy tắc bổ sung

Đầu tiên. bạn phải ghi đè tất cả các phương thức trừu tượng từ lớp cơ sở và triển khai chúng bằng cách viết phần thân của chúng

Bạn có thể tạo một đối tượng của lớp trừu tượng không?

Bạn không thể tạo đối tượng thuộc loại lớp trừu tượng . Tuy nhiên, bạn có thể sử dụng con trỏ và tham chiếu đến các loại lớp trừu tượng. Bạn tạo một lớp trừu tượng bằng cách khai báo ít nhất một hàm thành viên ảo thuần túy.

PHP có hỗ trợ lớp trừu tượng không?

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

Làm cách nào để tạo một thể hiện của lớp trừu tượng trong PHP?

Chúng ta có thể khai báo một lớp là trừu tượng bằng cách gắn tên của lớp với từ khóa trừu tượng . Định nghĩa rất rõ ràng, lớp chứa các phương thức trừu tượng được gọi là lớp trừu tượng. Các phương thức trừu tượng định nghĩa trong lớp trừu tượng chỉ có tên và đối số, không có mã nào khác.

Tại sao chúng ta sử dụng lớp trừu tượng trong OOP PHP?

Các lớp và phương thức trừu tượng là khi lớp cha có một phương thức được đặt tên nhưng cần (các) lớp con của nó để thực hiện các nhiệm vụ . Lớp trừu tượng là lớp chứa ít nhất một phương thức trừu tượng. Một phương thức trừu tượng là một phương thức được khai báo, nhưng không được triển khai trong mã.