Bạn đang "cài đặt" giá trị của biến/thuộc tính đó. Không ghi đè hoặc quá tải nó. Mã của bạn rất, rất phổ biến và bình thường.
Tất cả các thuật ngữ này ["set", "ghi đè", "quá tải"] có ý nghĩa cụ thể. Ghi đè và quá tải là về tính đa hình [phân lớp].
Từ //en.wikipedia.org/wiki/Object-oriented_programming:
Đa hình cho phép lập trình viên đối xử với các thành viên trong lớp giống như các thành viên của lớp phụ huynh của họ. Chính xác hơn, tính đa hình trong lập trình hướng đối tượng là khả năng của các đối tượng thuộc các loại dữ liệu khác nhau để đáp ứng các cuộc gọi phương thức của cùng tên, mỗi đối tượng theo một hành vi cụ thể loại thích hợp. Một phương pháp hoặc toán tử như +, -, hoặc *, có thể được áp dụng trừu tượng trong nhiều tình huống khác nhau. Nếu một con chó được lệnh nói [], điều này có thể gợi ra một vỏ cây []. Tuy nhiên, nếu một con lợn được lệnh nói [], điều này có thể gợi ra một oink []. Cả hai đều thừa hưởng nói [] từ động vật, nhưng các phương pháp lớp dẫn xuất của chúng ghi đè lên các phương thức của lớp cha; Điều này đang vượt qua tính đa hình. Quá tải đa hình là việc sử dụng một chữ ký phương pháp hoặc một toán tử như "+", để thực hiện một số chức năng khác nhau tùy thuộc vào việc thực hiện. Ví dụ, toán tử "+" có thể được sử dụng để thực hiện bổ sung số nguyên, bổ sung float, kết hợp danh sách hoặc nối chuỗi. Bất kỳ hai lớp con nào của số, chẳng hạn như số nguyên và gấp đôi, dự kiến sẽ cộng lại đúng cách trong ngôn ngữ OOP. Do đó, ngôn ngữ phải làm quá tải toán tử bổ sung, "+", để hoạt động theo cách này. Điều này giúp cải thiện khả năng đọc mã. Làm thế nào điều này được thực hiện thay đổi từ ngôn ngữ này sang ngôn ngữ khác, nhưng hầu hết các ngôn ngữ OOP đều hỗ trợ ít nhất một số mức độ quá tải đa hình.
Tushar Dot Khan0122 tại Gmail Dot Com ¶
3 năm trước
Marce! ¶
Imran tại phptrack dot com
Khả năng hiển thị phương pháp
Phương pháp lớp có thể được định nghĩa là công khai, riêng tư hoặc được bảo vệ. Các phương thức được khai báo mà không có bất kỳ từ khóa hiển thị rõ ràng được xác định là công khai.
Ví dụ #2 Tuyên bố Phương pháp
Khả năng hiển thị liên tục
Kể từ Php 7.1.0, các hằng số lớp có thể được định nghĩa là công khai, riêng tư hoặc được bảo vệ. Các hằng số được khai báo mà không có bất kỳ từ khóa hiển thị rõ ràng nào được xác định là công khai.
Ví dụ #3 Tuyên bố liên tục kể từ Php 7.1.0
public
0
public
1
public
2Khả năng hiển thị từ các đối tượng khác
Các đối tượng cùng loại sẽ có quyền truy cập vào nhau các thành viên riêng tư và được bảo vệ mặc dù chúng không phải là cùng một trường hợp. Điều này là do các chi tiết cụ thể thực hiện đã được biết khi bên trong các đối tượng đó.
Ví dụ #4 Truy cập các thành viên riêng của cùng loại đối tượng
public
3
public
1
public
5Ví dụ trên sẽ xuất ra:
string[5] "hello" Accessed the private method.
WBCarts tại Juno Dot Com ¶ ¶
10 năm trước
public
6
public
7
public
8
public
9
protected
0
protected
1
protected
2những gì ở từng chấm com ¶ ¶
13 năm trước
protected
3
protected
4
protected
5
protected
6
protected
7
protected
8
protected
9PGL tại Yoyo Dot org ¶ ¶
7 năm trước
private
0
private
1
private
2
private
3
private
4Stephane tại Harobed Dot org ¶ ¶
16 năm trước
private
5
private
6
private
7
private
8Kostya tại Eltexsoft dot com ¶ ¶
1 năm trước
private
9
0
/** functionprintHello[]
1
{
echo $this->public;
echo $this->protected;
echo $this->private;
}
}$obj = new MyClass[];
echo $obj->public; // Works
echo $obj->protected; // Fatal Error
echo $obj->private; // Fatal Error
$obj->printHello[]; // Shows Public, Protected and Private
* Define MyClass2
*/
{
// We can redeclare the public and protected properties, but not private
public $public = 'Public2';
protected $protected = 'Protected2';
{
echo $this->public;
echo $this->protected;
echo $this->private;
}
}$obj2 = new MyClass2[];
echo $obj2->public; // Works
echo $obj2->protected; // Fatal Error
echo $obj2->private; // Undefined
$obj2->printHello[]; // Shows Public2, Protected2, Undefined?>
/** functionprintHello[]
2
{
echo $this->public;
echo $this->protected;
echo $this->private;
}
}$obj = new MyClass[];
echo $obj->public; // Works
echo $obj->protected; // Fatal Error
echo $obj->private; // Fatal Error
$obj->printHello[]; // Shows Public, Protected and Private
* Define MyClass2
*/
{
// We can redeclare the public and protected properties, but not private
public $public = 'Public2';
protected $protected = 'Protected2';
{
echo $this->public;
echo $this->protected;
echo $this->private;
}
}$obj2 = new MyClass2[];
echo $obj2->public; // Works
echo $obj2->protected; // Fatal Error
echo $obj2->private; // Undefined
$obj2->printHello[]; // Shows Public2, Protected2, Undefined?>
/** functionprintHello[]
3
{
echo $this->public;
echo $this->protected;
echo $this->private;
}
}$obj = new MyClass[];
echo $obj->public; // Works
echo $obj->protected; // Fatal Error
echo $obj->private; // Fatal Error
$obj->printHello[]; // Shows Public, Protected and Private
* Define MyClass2
*/
{
// We can redeclare the public and protected properties, but not private
public $public = 'Public2';
protected $protected = 'Protected2';
{
echo $this->public;
echo $this->protected;
echo $this->private;
}
}$obj2 = new MyClass2[];
echo $obj2->public; // Works
echo $obj2->protected; // Fatal Error
echo $obj2->private; // Undefined
$obj2->printHello[]; // Shows Public2, Protected2, Undefined?>
/** functionprintHello[]
4
{
echo $this->public;
echo $this->protected;
echo $this->private;
}
}$obj = new MyClass[];
echo $obj->public; // Works
echo $obj->protected; // Fatal Error
echo $obj->private; // Fatal Error
$obj->printHello[]; // Shows Public, Protected and Private
* Define MyClass2
*/
{
// We can redeclare the public and protected properties, but not private
public $public = 'Public2';
protected $protected = 'Protected2';
{
echo $this->public;
echo $this->protected;
echo $this->private;
}
}$obj2 = new MyClass2[];
echo $obj2->public; // Works
echo $obj2->protected; // Fatal Error
echo $obj2->private; // Undefined
$obj2->printHello[]; // Shows Public2, Protected2, Undefined?>
/** functionprintHello[]
5
{
echo $this->public;
echo $this->protected;
echo $this->private;
}
}$obj = new MyClass[];
echo $obj->public; // Works
echo $obj->protected; // Fatal Error
echo $obj->private; // Fatal Error
$obj->printHello[]; // Shows Public, Protected and Private
* Define MyClass2
*/
{
// We can redeclare the public and protected properties, but not private
public $public = 'Public2';
protected $protected = 'Protected2';
{
echo $this->public;
echo $this->protected;
echo $this->private;
}
}$obj2 = new MyClass2[];
echo $obj2->public; // Works
echo $obj2->protected; // Fatal Error
echo $obj2->private; // Undefined
$obj2->printHello[]; // Shows Public2, Protected2, Undefined?>
/** functionprintHello[]
6
{
echo $this->public;
echo $this->protected;
echo $this->private;
}
}$obj = new MyClass[];
echo $obj->public; // Works
echo $obj->protected; // Fatal Error
echo $obj->private; // Fatal Error
$obj->printHello[]; // Shows Public, Protected and Private
* Define MyClass2
*/
{
// We can redeclare the public and protected properties, but not private
public $public = 'Public2';
protected $protected = 'Protected2';
{
echo $this->public;
echo $this->protected;
echo $this->private;
}
}$obj2 = new MyClass2[];
echo $obj2->public; // Works
echo $obj2->protected; // Fatal Error
echo $obj2->private; // Undefined
$obj2->printHello[]; // Shows Public2, Protected2, Undefined?>
/** functionprintHello[]
7
{
echo $this->public;
echo $this->protected;
echo $this->private;
}
}$obj = new MyClass[];
echo $obj->public; // Works
echo $obj->protected; // Fatal Error
echo $obj->private; // Fatal Error
$obj->printHello[]; // Shows Public, Protected and Private
* Define MyClass2
*/
{
// We can redeclare the public and protected properties, but not private
public $public = 'Public2';
protected $protected = 'Protected2';
{
echo $this->public;
echo $this->protected;
echo $this->private;
}
}$obj2 = new MyClass2[];
echo $obj2->public; // Works
echo $obj2->protected; // Fatal Error
echo $obj2->private; // Undefined
$obj2->printHello[]; // Shows Public2, Protected2, Undefined?>
/** functionprintHello[]
8
{
echo $this->public;
echo $this->protected;
echo $this->private;
}
}$obj = new MyClass[];
echo $obj->public; // Works
echo $obj->protected; // Fatal Error
echo $obj->private; // Fatal Error
$obj->printHello[]; // Shows Public, Protected and Private
* Define MyClass2
*/
{
// We can redeclare the public and protected properties, but not private
public $public = 'Public2';
protected $protected = 'Protected2';
{
echo $this->public;
echo $this->protected;
echo $this->private;
}
}$obj2 = new MyClass2[];
echo $obj2->public; // Works
echo $obj2->protected; // Fatal Error
echo $obj2->private; // Undefined
$obj2->printHello[]; // Shows Public2, Protected2, Undefined?>
printHello[]
{
echo $this->public;
echo $this->protected;
echo $this->private;
}
}$obj = new MyClass[];
echo $obj->public; // Works
echo $obj->protected; // Fatal Error
echo $obj->private; // Fatal Error
$obj->printHello[]; // Shows Public, Protected and Private/**
* Define MyClass2
*/
class MyClass2 extends MyClass
{
// We can redeclare the public and protected properties, but not private
public $public = 'Public2';
protected $protected = 'Protected2'; function
printHello[]
{
echo $this->public;
echo $this->protected;
echo $this->private;
}
}$obj2 = new MyClass2[];
echo $obj2->public; // Works
echo $obj2->protected; // Fatal Error
echo $obj2->private; // Undefined
$obj2->printHello[]; // Shows Public2, Protected2, Undefined?>
9PGL tại Yoyo Dot org ¶ ¶
10 năm trước
0
public function private function class private functionclass MyClass2 extends MyClass
1
{
// This is public
function Foo2[]
{
$this->MyPublic[];
$this->MyProtected[];
$this->MyPrivate[]; // Fatal Error
}
}$myclass2 = new MyClass2;
$myclass2->MyPublic[]; // Works
$myclass2->Foo2[]; // Public and Protected work, not Privateclass Bar
{
public function test[] {
$this->testPrivate[];
$this->testPublic[];
}
echo "Bar::testPublic\n";
}
echo "Bar::testPrivate\n";
}
}
{
public function testPublic[] {
echo "Foo::testPublic\n";
}
echo "Foo::testPrivate\n";
}
}$myFoo = new Foo[];
$myFoo->test[]; // Bar::testPrivate
// Foo::testPublic
?>
public function private function class private functionclass MyClass2 extends MyClass
2
{
// This is public
function Foo2[]
{
$this->MyPublic[];
$this->MyProtected[];
$this->MyPrivate[]; // Fatal Error
}
}$myclass2 = new MyClass2;
$myclass2->MyPublic[]; // Works
$myclass2->Foo2[]; // Public and Protected work, not Privateclass Bar
{
public function test[] {
$this->testPrivate[];
$this->testPublic[];
}
echo "Bar::testPublic\n";
}
echo "Bar::testPrivate\n";
}
}
{
public function testPublic[] {
echo "Foo::testPublic\n";
}
echo "Foo::testPrivate\n";
}
}$myFoo = new Foo[];
$myFoo->test[]; // Bar::testPrivate
// Foo::testPublic
?>
class MyClass2 extends MyClass
{
// This is public
function Foo2[]
{
$this->MyPublic[];
$this->MyProtected[];
$this->MyPrivate[]; // Fatal Error
}
}$myclass2 = new MyClass2;
$myclass2->MyPublic[]; // Works
$myclass2->Foo2[]; // Public and Protected work, not Privateclass Bar
{
public function test[] {
$this->testPrivate[];
$this->testPublic[];
} public function
testPublic[] {
echo "Bar::testPublic\n";
} private function
testPrivate[] {
echo "Bar::testPrivate\n";
}
}class
Foo extends Bar
{
public function testPublic[] {
echo "Foo::testPublic\n";
} private function
testPrivate[] {
echo "Foo::testPrivate\n";
}
}$myFoo = new Foo[];
$myFoo->test[]; // Bar::testPrivate
// Foo::testPublic
?>
3Stephane tại Harobed Dot org ¶ ¶
16 năm trước
public functionclass MyClass2 extends MyClass
{
// This is public
function Foo2[]
{
$this->MyPublic[];
$this->MyProtected[];
$this->MyPrivate[]; // Fatal Error
}
}$myclass2 = new MyClass2;
$myclass2->MyPublic[]; // Works
$myclass2->Foo2[]; // Public and Protected work, not Privateclass Bar
{
public function test[] {
$this->testPrivate[];
$this->testPublic[];
}
echo "Bar::testPublic\n";
}
private function
testPrivate[] {echo "Bar::testPrivate\n";
}
}
class
Foo extends Bar{
public function testPublic[] {
echo "Foo::testPublic\n";
}
private function
testPrivate[] {echo "Foo::testPrivate\n";
}
}$myFoo = new Foo[];
$myFoo->test[]; // Bar::testPrivate
// Foo::testPublic
?> 4
public function private function class private functionclass MyClass2 extends MyClass
5
{
// This is public
function Foo2[]
{
$this->MyPublic[];
$this->MyProtected[];
$this->MyPrivate[]; // Fatal Error
}
}$myclass2 = new MyClass2;
$myclass2->MyPublic[]; // Works
$myclass2->Foo2[]; // Public and Protected work, not Privateclass Bar
{
public function test[] {
$this->testPrivate[];
$this->testPublic[];
}
echo "Bar::testPublic\n";
}
echo "Bar::testPrivate\n";
}
}
{
public function testPublic[] {
echo "Foo::testPublic\n";
}
echo "Foo::testPrivate\n";
}
}$myFoo = new Foo[];
$myFoo->test[]; // Bar::testPrivate
// Foo::testPublic
?>
public function private function class private functionclass MyClass2 extends MyClass
6
{
// This is public
function Foo2[]
{
$this->MyPublic[];
$this->MyProtected[];
$this->MyPrivate[]; // Fatal Error
}
}$myclass2 = new MyClass2;
$myclass2->MyPublic[]; // Works
$myclass2->Foo2[]; // Public and Protected work, not Privateclass Bar
{
public function test[] {
$this->testPrivate[];
$this->testPublic[];
}
echo "Bar::testPublic\n";
}
echo "Bar::testPrivate\n";
}
}
{
public function testPublic[] {
echo "Foo::testPublic\n";
}
echo "Foo::testPrivate\n";
}
}$myFoo = new Foo[];
$myFoo->test[]; // Bar::testPrivate
// Foo::testPublic
?>
class MyClass2 extends MyClass
{
// This is public
function Foo2[]
{
$this->MyPublic[];
$this->MyProtected[];
$this->MyPrivate[]; // Fatal Error
}
}$myclass2 = new MyClass2;
$myclass2->MyPublic[]; // Works
$myclass2->Foo2[]; // Public and Protected work, not Privateclass Bar
{
public function test[] {
$this->testPrivate[];
$this->testPublic[];
} public function
testPublic[] {
echo "Bar::testPublic\n";
} private function
testPrivate[] {
echo "Bar::testPrivate\n";
}
}class
Foo extends Bar
{
public function testPublic[] {
echo "Foo::testPublic\n";
} private function
testPrivate[] {
echo "Foo::testPrivate\n";
}
}$myFoo = new Foo[];
$myFoo->test[]; // Bar::testPrivate
// Foo::testPublic
?>
7Kostya tại Eltexsoft dot com ¶ ¶
1 năm trước
public function private function class private functionclass MyClass2 extends MyClass
8
{
// This is public
function Foo2[]
{
$this->MyPublic[];
$this->MyProtected[];
$this->MyPrivate[]; // Fatal Error
}
}$myclass2 = new MyClass2;
$myclass2->MyPublic[]; // Works
$myclass2->Foo2[]; // Public and Protected work, not Privateclass Bar
{
public function test[] {
$this->testPrivate[];
$this->testPublic[];
}
echo "Bar::testPublic\n";
}
echo "Bar::testPrivate\n";
}
}
{
public function testPublic[] {
echo "Foo::testPublic\n";
}
echo "Foo::testPrivate\n";
}
}$myFoo = new Foo[];
$myFoo->test[]; // Bar::testPrivate
// Foo::testPublic
?>
public function private function class private functionclass MyClass2 extends MyClass
9
{
// This is public
function Foo2[]
{
$this->MyPublic[];
$this->MyProtected[];
$this->MyPrivate[]; // Fatal Error
}
}$myclass2 = new MyClass2;
$myclass2->MyPublic[]; // Works
$myclass2->Foo2[]; // Public and Protected work, not Privateclass Bar
{
public function test[] {
$this->testPrivate[];
$this->testPublic[];
}
echo "Bar::testPublic\n";
}
echo "Bar::testPrivate\n";
}
}
{
public function testPublic[] {
echo "Foo::testPublic\n";
}
echo "Foo::testPrivate\n";
}
}$myFoo = new Foo[];
$myFoo->test[]; // Bar::testPrivate
// Foo::testPublic
?>
public
00
public
01Alexaulbach tại Mayflower Dot de ¶ ¶
1 năm trước
public
02
function
8
public
04Alexaulbach tại Mayflower Dot de ¶ ¶
r dot wilczek tại web-appz dot de ¶
public
05
public
06
public
07
public
08Tushar Dot Khan0122 tại Gmail Dot Com ¶ ¶
16 năm trước
public
09
public function private function class private functionclass MyClass2 extends MyClass
6
{
// This is public
function Foo2[]
{
$this->MyPublic[];
$this->MyProtected[];
$this->MyPrivate[]; // Fatal Error
}
}$myclass2 = new MyClass2;
$myclass2->MyPublic[]; // Works
$myclass2->Foo2[]; // Public and Protected work, not Privateclass Bar
{
public function test[] {
$this->testPrivate[];
$this->testPublic[];
}
echo "Bar::testPublic\n";
}
echo "Bar::testPrivate\n";
}
}
{
public function testPublic[] {
echo "Foo::testPublic\n";
}
echo "Foo::testPrivate\n";
}
}$myFoo = new Foo[];
$myFoo->test[]; // Bar::testPrivate
// Foo::testPublic
?>
public
11Kostya tại Eltexsoft dot com ¶ ¶
1 năm trước
public
12
public
13
public
14
public
15
public
16
public
17
public
18
public
19
public
20
public
21
printHello[]
{
echo $this->public;
echo $this->protected;
echo $this->private;
}
}$obj = new MyClass[];
echo $obj->public; // Works
echo $obj->protected; // Fatal Error
echo $obj->private; // Fatal Error
$obj->printHello[]; // Shows Public, Protected and Private/**
* Define MyClass2
*/
class MyClass2 extends MyClass
{
// We can redeclare the public and protected properties, but not private
public $public = 'Public2';
protected $protected = 'Protected2'; function
printHello[]
{
echo $this->public;
echo $this->protected;
echo $this->private;
}
}$obj2 = new MyClass2[];
echo $obj2->public; // Works
echo $obj2->protected; // Fatal Error
echo $obj2->private; // Undefined
$obj2->printHello[]; // Shows Public2, Protected2, Undefined?>
9Alexaulbach tại Mayflower Dot de ¶ ¶
r dot wilczek tại web-appz dot de ¶
public
23
public
24
2
public
36Kostya tại Eltexsoft dot com ¶ ¶
13 năm trước
public
37
public
38
public
39
public
40
public
41
public
42
public
43
public
44
printHello[]
{
echo $this->public;
echo $this->protected;
echo $this->private;
}
}$obj = new MyClass[];
echo $obj->public; // Works
echo $obj->protected; // Fatal Error
echo $obj->private; // Fatal Error
$obj->printHello[]; // Shows Public, Protected and Private/**
* Define MyClass2
*/
class MyClass2 extends MyClass
{
// We can redeclare the public and protected properties, but not private
public $public = 'Public2';
protected $protected = 'Protected2'; function
printHello[]
{
echo $this->public;
echo $this->protected;
echo $this->private;
}
}$obj2 = new MyClass2[];
echo $obj2->public; // Works
echo $obj2->protected; // Fatal Error
echo $obj2->private; // Undefined
$obj2->printHello[]; // Shows Public2, Protected2, Undefined?>
9PGL tại Yoyo Dot org ¶ ¶
7 năm trước
public
46
public
47
public
48
public
49
public
50
public
51
public
52
public
53
public
54
public
55
public
56
public
57
public
58
public
59
printHello[]
{
echo $this->public;
echo $this->protected;
echo $this->private;
}
}$obj = new MyClass[];
echo $obj->public; // Works
echo $obj->protected; // Fatal Error
echo $obj->private; // Fatal Error
$obj->printHello[]; // Shows Public, Protected and Private/**
* Define MyClass2
*/
class MyClass2 extends MyClass
{
// We can redeclare the public and protected properties, but not private
public $public = 'Public2';
protected $protected = 'Protected2'; function
printHello[]
{
echo $this->public;
echo $this->protected;
echo $this->private;
}
}$obj2 = new MyClass2[];
echo $obj2->public; // Works
echo $obj2->protected; // Fatal Error
echo $obj2->private; // Undefined
$obj2->printHello[]; // Shows Public2, Protected2, Undefined?>
9Stephane tại Harobed Dot org ¶ ¶
13 năm trước
public
61
public
62
printHello[]
{
echo $this->public;
echo $this->protected;
echo $this->private;
}
}$obj = new MyClass[];
echo $obj->public; // Works
echo $obj->protected; // Fatal Error
echo $obj->private; // Fatal Error
$obj->printHello[]; // Shows Public, Protected and Private/**
* Define MyClass2
*/
class MyClass2 extends MyClass
{
// We can redeclare the public and protected properties, but not private
public $public = 'Public2';
protected $protected = 'Protected2'; function
printHello[]
{
echo $this->public;
echo $this->protected;
echo $this->private;
}
}$obj2 = new MyClass2[];
echo $obj2->public; // Works
echo $obj2->protected; // Fatal Error
echo $obj2->private; // Undefined
$obj2->printHello[]; // Shows Public2, Protected2, Undefined?>
9