tôi đã trở thành một chút nhầm lẫn về lớp trừu tượng! tôi đã đọc nhiều hơn các bài viết được viết trong stackoverflow và một trang web khác nhưng tôi đã không hiểu! vì vậy tôi đã xem lại cuốn sách của mình nhưng tôi cũng không hiểu nó. vì vậy hãy phân tích mã bên dưới từng bước:Phân tích lớp trừu tượng trong php
cảm ơn trước
<?php
abstract class AbstractClass
{
abstract protected function getValue();
public function printOut() {
print $this->getValue();
}
}
class ConcreteClass1 extends AbstractClass
{
protected function getValue() {
return "ConcreteClass1";
}
}
class ConcreteClass2 extends AbstractClass
{
protected function getValue() {
return "ConcreteClass2";
}
}
$class1 = new ConcreteClass1;
$class1->printOut();
$class2 = new ConcreteClass2;
$class2->printOut();
?>
cảm ơn lời giải thích tuyệt vời của bạn! nhưng chỉ một điều thôi! Chúng ta có viết "hàm getValue();" để nói rằng hàm này không có ở đây (trong lớp cha). nó thuộc về lớp mở rộng.?! vì vậy bất cứ khi nào chúng ta gọi hàm "printOut" từ lớp mở rộng, và hàm bao gồm "print $ this-> getValue();" nó đã tìm kiếm hàm getValue trong AbstractClass nhưng vì chúng ta đã viết "hàm getValue();" nó tìm kiếm nó trong lớp mở rộng! Tôi có đúng không? – mehdi
Khi gọi một lớp nếu đứa trẻ không có lớp được thực hiện, thường là sau khi đi đến người cha. Nếu bạn áp dụng logic đó, bạn sẽ hiểu rằng khi phương thức getValue bị ghi đè (trong trường hợp này, nếu bạn không thể sử dụng một lớp có phương thức trừu tượng không được thực hiện) khi gọi printOut của người cha, nó sẽ tự động trả về giá trị của đứa trẻ. Hy vọng nó đã giúp! –
thực sự đã giúp tôi! cảm ơn Marcos! – mehdi