cuốn sách gpt4 ai đã làm

继承

In lại Tác giả: Hồ Xil Thời gian cập nhật: 2023-11-01 13:09:03 28 4
mua khóa gpt4 Nike

Tôi đang sử dụng PHP 5.3 ổn định và đôi khi gặp phải hành vi rất không nhất quán. Theo tôi biết, trong tính kế thừa, tất cả các thuộc tính và phương thức (riêng tư, công khai và được bảo vệ) trong siêu lớp đều được truyền cho lớp con.

lớp học
{
riêng tư $_name = "foo";
}
Thanh lớp mở rộng Foo
{
hàm công khai getName()
{
trả lại $this->_name;
}
}
$o = Thanh mới();
echo $o->getName();

//Lưu ý: Thuộc tính không xác định: Bar::$_name trong ...\test.php trên dòng 11

Nhưng khi thuộc tính Foo::$_name được xác định là "công khai", nó không báo lỗi. PHP có quy tắc OO riêng không? ? ?

Cảm ơn

biên tập:Bây giờ mọi thứ đã rõ ràng. Thực ra, tôi đang nghĩ đến việc "kế thừa", tạo ra một lớp mới và kế thừa tất cả các thành viên một cách độc lập với tổ tiên của nó. Tôi không biết rằng quy tắc "truy cập" và quy tắc kế thừa là như nhau.

biên tậpDựa trên nhận xét của bạn, đoạn mã này sẽ có lỗi. Nhưng nó đang hoạt động.

lớp học
{
riêng $bar = "baz";

chức năng công cộng getBar()
{
trả về $this->bar;
}
}

Thanh lớp mở rộng Foo
{}

$o = Thanh mới;
echo $o->getBar();

câu trả lời hay nhất

từ Hướng dẫn sử dụng PHP :

Khả năng hiển thị của một thuộc tính hoặc phương thức có thể được xác định bằng cách thêm từ khóa vào trước phần khai báo công cộng, protected or riêng tưCác thành viên .Class đã khai báo công cộng có thể được truy cập ở khắp mọi nơi. protected chỉ có thể được truy cập trong chính lớp đó và bởi các thành viên được kế thừa và lớp cha được khai báo là. riêng tư chỉ có thể được truy cập bởi lớp xác định thành viên.

hạng A
{
public $prop1; // có thể truy cập từ mọi nơi
protected $prop2; // có thể truy cập được trong lớp này và lớp con
riêng $prop3; // chỉ có thể truy cập được trong lớp này
}

Không, điều này không khác gì các ngôn ngữ khác thực hiện cùng một từ khóa.

Về chỉnh sửa thứ hai và đoạn mã của bạn:

Không, điều này sẽ không gây ra lỗi vì getBar() 继承自 FooFoo Phải $bar có khả năng hiển thị. nếu ở Thanh được xác định hoặc quá tải trong getBar(), nó sẽ không hoạt động. Nhìn thấy http://codepad.org/rlSWx7SQ

Về tính kế thừa, chúng tôi tìm thấy một câu hỏi tương tự trên Stack Overflow: https://stackoverflow.com/questions/2042649/

28 4 0
Chứng chỉ ICP Bắc Kinh số 000000
Hợp tác quảng cáo: 1813099741@qq.com 6ren.com
Xem sitemap của VNExpress