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
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;
//...
}
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];
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ố 8Kế 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