echo $this->bb;
Biến được kế thừa và không riêng tư, vì vậy nó là một phần của đối tượng hiện tại.
Dưới đây là thông tin bổ sung để đáp ứng yêu cầu của bạn để biết thêm thông tin về việc sử dụng parent::
:
Sử dụng parent::
Khi bạn muốn thêm chức năng bổ sung vào phương thức từ lớp cha. Ví dụ, hãy tưởng tượng một lớp Airplane
:
class Airplane {
private $pilot;
public function __construct[ $pilot ] {
$this->pilot = $pilot;
}
}
Bây giờ giả sử chúng tôi muốn tạo ra một loại máy bay mới cũng có một điều hướng. Bạn có thể mở rộng phương thức __construct [] để thêm chức năng mới, nhưng vẫn sử dụng chức năng do cha mẹ cung cấp:
class Bomber extends Airplane {
private $navigator;
public function __construct[ $pilot, $navigator ] {
$this->navigator = $navigator;
parent::__construct[ $pilot ]; // Assigns $pilot to $this->pilot
}
}
Bằng cách này, bạn có thể tuân theo nguyên tắc phát triển khô khan nhưng vẫn cung cấp tất cả các chức năng mà bạn mong muốn.
Chào mừng đến với cộng đồng Treehouse
Cộng đồng Treehouse là nơi gặp gỡ cho các nhà phát triển, nhà thiết kế và lập trình viên của tất cả các nền tảng và cấp độ kỹ năng để nhận được hỗ trợ. Phối hợp ở đây về các lỗi mã hoặc lỗi mà bạn cần phản hồi hoặc yêu cầu thêm một bộ mắt về dự án mới nhất của bạn. Tham gia cùng hàng ngàn sinh viên Treehouse và cựu sinh viên trong cộng đồng ngày hôm nay. .
Tìm kiếm để học một cái gì đó mới?
Treehouse cung cấp một bản dùng thử miễn phí bảy ngày cho sinh viên mới. Nhận quyền truy cập vào hàng ngàn giờ nội dung và một cộng đồng hỗ trợ. Bắt đầu thử nghiệm miễn phí ngay hôm nay.
Truy cập các chức năng lớp cha Điều này thực sự đơn giản, bạn chỉ cần gọi hàm tạo của lớp cha trong hàm tạo của lớp con và sau đó đối tượng của lớp con có thể truy cập các phương thức và thuộc tính của lớp cha.
Một lớp con có kế thừa các biến không?
Chúng tôi biết mọi lớp con đều thừa hưởng các biến và phương pháp [trạng thái và hành vi] từ lớp cha của nó.
Trong php.net, có một lời giải thích về từ khóa cha mẹ
getInfo[]; ?>
"Bạn có thể thấy mình viết mã đề cập đến các biến và chức năng trong các lớp cơ sở. Điều này đặc biệt đúng nếu lớp dẫn xuất của bạn là một sự tinh chỉnh hoặc chuyên môn hóa mã trong lớp cơ sở của bạn.
Thay vì sử dụng tên theo nghĩa đen của lớp cơ sở trong mã của bạn, bạn nên sử dụng cha mẹ đặc biệt, trong đó đề cập đến tên của lớp cơ sở của bạn như được đưa ra trong phần mở rộng của lớp của bạn. "
Nhưng tôi không thể sử dụng từ khóa cha để truy cập thuộc tính của lớp
Nó gây ra lỗi
Lỗi chết người: Truy cập vào tài sản tĩnh không được khai báo: Cá :: $ Common_name
Bất cứ ai có thể giải thích, tại sao?
1 câu trả lời
Lớp cá hồi của bạn mở rộng lớp cá của bạn, điều này có nghĩa là tất cả các thuộc tính của nó cũng được thừa hưởng.
Truy cập các chức năng lớp cha Điều này thực sự đơn giản, bạn chỉ cần gọi hàm tạo của lớp cha trong hàm tạo của lớp con và sau đó đối tượng của lớp con có thể truy cập các phương thức và thuộc tính của lớp cha.
Một lớp con có kế thừa các biến không?
Chúng tôi biết mọi lớp con đều thừa hưởng các biến và phương pháp [trạng thái và hành vi] từ lớp cha của nó.
Kế thừa là một nguyên tắc lập trình được thiết lập tốt và PHP sử dụng nguyên tắc này trong mô hình đối tượng của nó. Nguyên tắc này sẽ ảnh hưởng đến cách nhiều lớp và đối tượng liên quan đến nhau.
Ví dụ, khi mở rộng một lớp, lớp con kế thừa tất cả các phương thức, thuộc tính và hằng số được bảo vệ và được bảo vệ từ lớp cha. Trừ khi một lớp ghi đè các phương pháp đó, họ sẽ giữ lại chức năng ban đầu của chúng.
Ghi chú::
Trừ khi tự động tải được sử dụng, các lớp phải được xác định trước khi chúng được sử dụng. Nếu một lớp mở rộng một lớp khác, thì lớp cha phải được khai báo trước cấu trúc lớp con. Quy tắc này áp dụng cho các lớp kế thừa các lớp và giao diện khác.
Ghi chú::
Nó không được phép ghi đè một thuộc tính đọc-viết với thuộc tính readonly hoặc ngược lại.
4class Airplane { private $pilot; public function __construct[ $pilot ] { $this->pilot = $pilot; } }
Ví dụ #1 ví dụ kế thừa
class Airplane {
private $pilot;
public function __construct[ $pilot ] {
$this->pilot = $pilot;
}
}
5class Airplane {
private $pilot;
public function __construct[ $pilot ] {
$this->pilot = $pilot;
}
}
6class Airplane {
private $pilot;
public function __construct[ $pilot ] {
$this->pilot = $pilot;
}
}
7Trả về loại tương thích với các lớp bên trong
Trước PHP 8.1, hầu hết các lớp hoặc phương thức nội bộ đã không khai báo loại trả lại của họ và bất kỳ loại hoàn trả nào được cho phép khi mở rộng chúng.
Kể từ Php 8.1.0, hầu hết các phương thức nội bộ bắt đầu "dự kiến" khai báo loại trả lại của họ, trong trường hợp đó, loại phương thức trả về phải tương thích với cha mẹ được mở rộng; Nếu không, một thông báo không nhận được được phát ra. Lưu ý rằng việc thiếu một tuyên bố hoàn trả rõ ràng cũng được coi là sự không phù hợp đặc trưng, và do đó dẫn đến thông báo từ chối.
Nếu loại trả về không thể được khai báo cho một phương thức ghi đè do các mối quan tâm tương thích phiên bản chéo PHP, một thuộc tính
class Airplane {
private $pilot;
public function __construct[ $pilot ] {
$this->pilot = $pilot;
}
}
8 có thể được thêm vào để làm im lặng thông báo từ chối.Ví dụ #2 Phương thức ghi đè không khai báo bất kỳ loại trả về nào
class Airplane {
private $pilot;
public function __construct[ $pilot ] {
$this->pilot = $pilot;
}
}
9Ví dụ #3 Phương thức ghi đè khai báo loại trả về sai
class Bomber extends Airplane {
private $navigator;
public function __construct[ $pilot, $navigator ] {
$this->navigator = $navigator;
parent::__construct[ $pilot ]; // Assigns $pilot to $this->pilot
}
}
0Ví dụ #4 Phương thức ghi đè tuyên bố loại trả về sai mà không có thông báo không dùng nữa
class Bomber extends Airplane {
private $navigator;
public function __construct[ $pilot, $navigator ] {
$this->navigator = $navigator;
parent::__construct[ $pilot ]; // Assigns $pilot to $this->pilot
}
}
1Jackdracona tại msn dot com ¶ ¶
12 năm trước
class Bomber extends Airplane {
private $navigator;
public function __construct[ $pilot, $navigator ] {
$this->navigator = $navigator;
parent::__construct[ $pilot ]; // Assigns $pilot to $this->pilot
}
}
2class Bomber extends Airplane {
private $navigator;
public function __construct[ $pilot, $navigator ] {
$this->navigator = $navigator;
parent::__construct[ $pilot ]; // Assigns $pilot to $this->pilot
}
}
3class Bomber extends Airplane {
private $navigator;
public function __construct[ $pilot, $navigator ] {
$this->navigator = $navigator;
parent::__construct[ $pilot ]; // Assigns $pilot to $this->pilot
}
}
4class Bomber extends Airplane {
private $navigator;
public function __construct[ $pilot, $navigator ] {
$this->navigator = $navigator;
parent::__construct[ $pilot ]; // Assigns $pilot to $this->pilot
}
}
5class Bomber extends Airplane {
private $navigator;
public function __construct[ $pilot, $navigator ] {
$this->navigator = $navigator;
parent::__construct[ $pilot ]; // Assigns $pilot to $this->pilot
}
}
6class Bomber extends Airplane {
private $navigator;
public function __construct[ $pilot, $navigator ] {
$this->navigator = $navigator;
parent::__construct[ $pilot ]; // Assigns $pilot to $this->pilot
}
}
7
Mohammad Istanbouly ¶ ¶
5 năm trước
class Bomber extends Airplane {
private $navigator;
public function __construct[ $pilot, $navigator ] {
$this->navigator = $navigator;
parent::__construct[ $pilot ]; // Assigns $pilot to $this->pilot
}
}
8class Bomber extends Airplane {
private $navigator;
public function __construct[ $pilot, $navigator ] {
$this->navigator = $navigator;
parent::__construct[ $pilot ]; // Assigns $pilot to $this->pilot
}
}
9getInfo[]; ?>0
getInfo[]; ?>1
Strata_ranger tại hotmail dot com ¶
12 năm trước
getInfo[]; ?>2
getInfo[]; ?>3
getInfo[]; ?>4
getInfo[]; ?>5
getInfo[]; ?>6
getInfo[]; ?>7
Mohammad Istanbouly ¶ ¶
5 năm trước
getInfo[]; ?>8
getInfo[]; ?>9
parent::
0
parent::
1
parent::
2Strata_ranger tại hotmail dot com ¶
Akashwebdev tại gmail dot com ¶
parent::
3
parent::
4
parent::
5
getInfo[]; ?>6
parent::
77 năm trước ¶
Jarrod tại Squarecrow Dot Com ¶
parent::
8
parent::
9
getInfo[]; ?>6
parent::
113 năm trước ¶
Niemans tại pbsolo dot nl ¶
parent::
2
parent::
3
parent::
4
parent::
5
parent::
62 năm trước ¶
Ẩn danh ¶
parent::
7
parent::
8
parent::
6