Một lớp trừu tượng chứa khai báo các phương thức nhưng không chứa định nghĩa của chúng. Nó chỉ chứa tên của họ. Lớp con có trách nhiệm định nghĩa các phương thức này
một phương pháp trừu tượng là gì?
Một phương thức trừu tượng là một phương thức của một lớp trừu tượng được khai báo bằng các từ khóa trừu tượng và không chứa phần thân. Nó được định nghĩa bởi lớp con
- từ khóa trừu tượng được sử dụng để khai báo một lớp hoặc phương thức trừu tượng
- Một lớp trừu tượng phải chứa ít nhất một phương thức trừu tượng. Tuy nhiên, nó cũng có thể chứa các phương thức không trừu tượng.
cú pháp
Các quy tắc của lớp trừu tượng trong PHP là gì?
- Một lớp trừu tượng phải chứa ít nhất một phương thức trừu tượng. Tuy nhiên, nó cũng có thể chứa các phương thức không trừu tượng
- Khi một đứa trẻ được gọi kế thừa lớp cha trừu tượng, nó phải định nghĩa các phương thức trừu tượng của lớp cha có cùng tên
- Trong khi định nghĩa các phương thức trừu tượng trong lớp con, nó nên được định nghĩa với công cụ sửa đổi truy cập ít bị hạn chế hơn. Chẳng hạn, nếu lớp cha chứa phương thức trừu tượng có công cụ sửa đổi truy cập được bảo vệ. Vì vậy, khi lớp con định nghĩa phương thức này, nó sẽ giữ công cụ sửa đổi truy cập của nó là được bảo vệ hoặc công khai. Nó không thể đặt nó ở chế độ riêng tư, vì nó bị hạn chế hơn so với chế độ được bảo vệ
- Lớp con xác định phương thức trừu tượng phải truyền số lượng đối số bằng nhau như được chỉ định trong khai báo trong lớp cha mẹ asbtract. Tuy nhiên, lớp con có thể có các đối số tùy chọn/bổ sung ngoài những đối số bắt buộc
Ví dụ về lớp Trừu tượng trong PHP
Giải thích ví dụ trên
- Trong ví dụ trên, chúng ta tạo một lớp trừu tượng Bike chứa phần giới thiệu phương thức trừu tượng
- Chúng ta tạo hai lớp con Honda và Suzuki mở rộng lớp trừu tượng và định nghĩa phương thức giới thiệu
- Chúng tôi tạo các đối tượng của các lớp này và gọi phương thức giới thiệu bằng các đối tượng của chúng. Phương thức giới thiệu hoạt động theo cách triển khai được đưa ra bởi lớp tương ứng của nó
Ví dụ về lớp trừu tượng có thêm đối số trong ghi đè phương thức
Giải thích ví dụ trên
- Logic cơ bản của ví dụ trên giống như ví dụ trước. Tuy nhiên, chúng tôi chuyển đối số bổ sung cho hàm trong phương thức giới thiệu của lớp suzuki
- Như chúng ta đã định nghĩa quy tắc trước đó trong hướng dẫn này, công cụ sửa đổi quyền truy cập của lớp con trong khi triển khai phương thức trừu tượng của lớp cha phải nhỏ hơn giá trị được chỉ định trong lớp cha để khai báo phương thức này. Vì vậy, cả hai lớp con đều sử dụng công cụ sửa đổi truy cập công khai để xác định phương thức giới thiệu
- Cố gắng xác định chức năng với công cụ sửa đổi quyền truy cập riêng tư, nó sẽ tạo ra lỗi
Ghi chú. Lớp trừu tượng không chứa bất kỳ phương thức khởi tạo nào. Vì vậy, chúng ta không thể tạo thể hiện của một lớp trừu tượng
Khi nào có thể định nghĩa một lớp tóm tắt bằng cách sử dụng từ khóa abstract
. Một lớp được định nghĩa là trừu tượng không thể được khởi tạo
Sau đây là một số điểm quan trọng về lớp trừu tượng và phương thức
- Một lớp trừu tượng có thể có các phương thức và thuộc tính giống như bất kỳ lớp bình thường nào khác
- Một lớp trừu tượng không thể được khởi tạo, do đó chúng ta cần tạo một lớp con mở rộng nó, sau đó chúng ta có thể tạo đối tượng của lớp con
- Nếu một lớp thậm chí có một phương thức trừu tượng duy nhất thì lớp đó cũng phải trừu tượng
- Một phương thức trừu tượng chỉ là khai báo, nơi chúng tôi cung cấp tên của phương thức và đối số, trong khi phần cơ thể trống
Đừng lo lắng nếu nó quá nhiều để bạn hiểu. Chúng tôi sẽ trình bày tất cả các điểm từng bước với các ví dụ, hãy bắt đầu bằng cách hiểu cách chúng tôi tạo một lớp trừu tượng
Tạo một lớp abstract
Để khai báo một lớp trừu tượng, chúng ta cần sử dụng từ khóa abstract
trước tên của lớp
Hãy lấy một ví dụ
Trong ví dụ trên, lớp Vehicle
của chúng ta là một lớp trừu tượng, có một phương thức trừu tượng
Ý tưởng đằng sau việc tạo lớp trừu tượng là ràng buộc các nhà phát triển tuân theo một bộ nguyên tắc, ví dụ: nếu bạn muốn tạo một lớp mới mở rộng lớp của chúng ta Vehicle
thì bạn sẽ phải cung cấp định nghĩa cho phương thức trừu tượng
name. " - Engine start...
";
}
// non-abstract public function stop
public function stop[] {
echo $this->name. " - Engine stop...
";
}
// non-abstract public function setName
public function setName[$name] {
$this->name = $name;
}
// abstract function mileage
abstract public function mileage[] {
}
}
?>
0, nếu không thì lớp con . Do đó, tất cả các lớp con bắt buộc phải cung cấp định nghĩa cho phương thức name. " - Engine start...
";
}
// non-abstract public function stop
public function stop[] {
echo $this->name. " - Engine stop...
";
}
// non-abstract public function setName
public function setName[$name] {
$this->name = $name;
}
// abstract function mileage
abstract public function mileage[] {
}
}
?>
0Phương thức phi trừu tượng trong lớp trừu tượng
Bất kỳ lớp nào có một phương thức trừu tượng duy nhất phải được khai báo trừu tượng. Nhưng một lớp trừu tượng cũng có thể có các phương thức không trừu tượng, có thể được truy cập và sử dụng trực tiếp bởi các lớp con mà không cần ghi đè chúng
Hãy mở rộng ví dụ trên và thêm một phương thức không trừu tượng vào lớp của chúng ta Vehicle
name. " - Engine start...
";
}
// non-abstract public function stop
public function stop[] {
echo $this->name. " - Engine stop...
";
}
// non-abstract public function setName
public function setName[$name] {
$this->name = $name;
}
// abstract function mileage
abstract public function mileage[] {
}
}
?>
Trong đoạn mã trên, chúng tôi đã thêm ba phương thức không trừu tượng là
name. " - Engine start...
";
}
// non-abstract public function stop
public function stop[] {
echo $this->name. " - Engine stop...
";
}
// non-abstract public function setName
public function setName[$name] {
$this->name = $name;
}
// abstract function mileage
abstract public function mileage[] {
}
}
?>
3, name. " - Engine start...
";
}
// non-abstract public function stop
public function stop[] {
echo $this->name. " - Engine stop...
";
}
// non-abstract public function setName
public function setName[$name] {
$this->name = $name;
}
// abstract function mileage
abstract public function mileage[] {
}
}
?>
4 và name. " - Engine start...
";
}
// non-abstract public function stop
public function stop[] {
echo $this->name. " - Engine stop...
";
}
// non-abstract public function setName
public function setName[$name] {
$this->name = $name;
}
// abstract function mileage
abstract public function mileage[] {
}
}
?>
5 vào lớp trừu tượng Vehicle
của chúng tôiKế thừa các lớp trừu tượng
Cũng giống như bất kỳ lớp nào khác, chúng ta cũng có thể tạo các lớp mở rộng các lớp trừu tượng
Sự khác biệt duy nhất ở đây là lớp con phải cung cấp định nghĩa cho phương thức trừu tượng được khai báo trong lớp cha trừu tượng
Nếu lớp con không cung cấp định nghĩa cho phương thức trừu tượng, thì nó cũng nên được định nghĩa là một lớp trừu tượng
Hãy tạo hai lớp con kế thừa lớp Vehicle
và sẽ có định nghĩa cho phương thức trừu tượng
name. " - Engine start...
";
}
// non-abstract public function stop
public function stop[] {
echo $this->name. " - Engine stop...
";
}
// non-abstract public function setName
public function setName[$name] {
$this->name = $name;
}
// abstract function mileage
abstract public function mileage[] {
}
}
?>
0name . "
";
echo "My mileage range is - 15 to 22 Km/L";
}
}
?>
Chúng ta có thể có bao nhiêu lớp con tùy thích, hãy tạo một lớp khác
name . "
";
echo "My mileage range is - 35 to 47 Km/L";
}
}
?>
Như đã đề cập ở trên rằng một lớp trừu tượng không thể có bất kỳ đối tượng nào, khi chúng ta đã định nghĩa các lớp con phù hợp, chúng ta có thể tạo đối tượng cho chúng