sách gpt4 ăn đã đi

Học tập hướng đối tượng PHP parent::keyword

In lại Tác giả: qq735679552 Thời gian cập nhật: 27-09-2022 22:32:09 27 4
mua khóa gpt4 giày nike

CFSDN nhấn mạnh vào giá trị tạo ra nguồn mở và chúng tôi cam kết xây dựng nền tảng chia sẻ tài nguyên để mọi nhân viên CNTT có thể tìm thấy thế giới tuyệt vời của bạn tại đây.

Bài viết trên blog CFSDN PHP học hướng đối tượng - parent:: được tác giả sưu tầm và sắp xếp. Nếu các bạn quan tâm đến bài viết này thì nhớ like nhé.

Lời nói đầu.

Gần đây, tôi đã sử dụng từ khóa parent:: trong một dự án phát triển THINKPHP. Trên thực tế, từ khóa parent:: là một hàm thường được sử dụng trong PHP. Điều này không chỉ được sử dụng trong phát triển dự án THINKPHP, ngay cả đối với một trang web doanh nghiệp nhỏ. , cũng sẽ có nhiều hàm giống nhau, chúng ta có thể gói gọn chúng vào một lớp cha, sau đó nhiều lớp con kế thừa trực tiếp phần chung của lớp cha.

Trong PHP5, parent:: được sử dụng để tham chiếu các phương thức của lớp cha.

parent:: có thể được sử dụng để gọi các phương thức thành viên được xác định trong lớp cha.

parent:: truy ngược lại lớp cha mẹ trực tiếp.

Gọi phương thức lớp cha thông qua parent::.

?
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
lớp học người lao động{
  được bảo vệ $ sẽ =3000; 
  công cộng chức năng lấy Sal(){
  $cái này ->sal = $cái này ->sal + 1200;
  trở lại $cái này ->sal ;
  }
}
 
lớp học Giám đốc mở rộng người lao động {
  // Nếu bạn muốn người quản lý trả thêm 1.500 nhân dân tệ ngoài lương của nhân viên.
  // Phương thức getSal() của lớp cha phải được gọi trước tiên.
  công cộng chức năng lấy Sal(){ 
  cha mẹ::getSal(); // Phương thức của lớp cha được gọi ở đây.
  $cái này ->sal = $cái này ->sal + 1500;
  trở lại $cái này ->sal ;
  }
}
$emp = mới người lao động();
tiếng vọng "Mức lương của một nhân viên bình thường là" . $emp ->getSal();
tiếng vọng "
"
;
//xiariboke.com
$quản lý = mới Giám đốc();
tiếng vọng "Mức lương của người quản lý là:" . $quản lý ->getSal();
?>

Kết quả chạy chương trình:

Mức lương của nhân viên bình thường là 4200.

Lương của người quản lý là: 5700.

Thuộc tính riêng của lớp cha.

Chuyện này rất khó giải thích.

Thuộc tính riêng tư không thể được kế thừa nếu lớp cha có thuộc tính riêng tư. Khi đó các phương thức của lớp cha chỉ phục vụ các thuộc tính riêng của lớp cha.

Ví dụ sau có vẻ lạ. Một thuộc tính $sal được xác định lại trong lớp con, nhưng hệ thống trả về thuộc tính của lớp cha.

?
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
lớp học người lao động{
  riêng tư $ sẽ =3000;
  //bảo vệ $sal=3000;
  công cộng chức năng lấy Sal(){ 
  trở lại $cái này ->sal;
 
}
 
lớp học Giám đốc mở rộng người lao động {
  được bảo vệ $ sẽ =5000;
 
  công cộng chức năng getParentSal(){
  // Cái được trả về ở đây là thuộc tính riêng tư của lớp cha.
  trở lại cha mẹ::getSal();
  }
}
$quản lý = mới Giám đốc();
tiếng vọng "PHP" .phpversion(). "
"
;
tiếng vọng $quản lý ->getSal();
tiếng vọng "
"
;
tiếng vọng "của cha mẹ \$sal " . $quản lý ->getParentSal();
//xiariboke.com
?>

Kết quả chạy chương trình:

Phiên bản PHP 5.2.9

3000 。

tiền lương của cha mẹ là 3000 đô la.

Nếu các thuộc tính của lớp cha bị lớp con ghi đè. Kết quả là thế này. Lưu ý rằng định nghĩa thuộc tính ở dòng 5 sẽ được bảo vệ.

?
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
lớp học người lao động{
  //riêng tư $sal=3000;
  được bảo vệ $ sẽ =3000;
  công cộng chức năng lấy Sal(){ 
  trở lại $cái này ->sal;
 
}
 
lớp học Giám đốc mở rộng người lao động {
  được bảo vệ $ sẽ =5000;
  //xiariboke.com
  công cộng chức năng getParentSal(){
  // Cái được trả về ở đây là thuộc tính riêng tư của lớp cha.
  trở lại cha mẹ::getSal();
  }
}
$quản lý = mới Giám đốc();
tiếng vọng "PHP" .phpversion(). "
"
;
tiếng vọng $quản lý ->getSal();
tiếng vọng "
"
;
tiếng vọng "của cha mẹ \$sal " . $quản lý ->getParentSal();
 
?>

Kết quả chạy chương trình:

Phiên bản PHP 5.2.9

5000 。

tiền lương của cha mẹ là 5000 đô la.

Các phương thức được ghi đè trong các lớp con vẫn hợp lệ cho lớp riêng tư hiện tại.

?
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
lớp học người lao động{
  riêng tư $ sẽ =3000;
  công cộng chức năng lấy Sal(){ 
  trở lại $cái này ->sal;
  }
}
 
lớp học Giám đốc mở rộng người lao động {
  riêng tư $ sẽ =5000;
  //Phương thức bị ghi đè
  công cộng chức năng lấy Sal(){ 
  trở lại $cái này ->sal;
 
  công cộng chức năng getParentSal(){
  // Cái được trả về ở đây là thuộc tính riêng tư của lớp cha.
  trở lại cha mẹ::getSal();
  }
}
$quản lý = mới Giám đốc();
tiếng vọng "PHP" .phpversion(). "
"
;
tiếng vọng $quản lý ->getSal();
tiếng vọng "
"
;
tiếng vọng "của cha mẹ \$sal " . $quản lý ->getParentSal();
 
?>

Kết quả chạy chương trình:

Phiên bản PHP 5.2.9

5000 。

tiền lương của cha mẹ là 3000 đô la.

Bật trạng thái gỡ lỗi zend để xem điều gì đang diễn ra trong bộ nhớ. Lưu ý rằng có hai $sal ở phía dưới. Chúng lần lượt là 3000 và 5000.

?
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
lớp học người lao động{
  riêng tư $ sẽ =3000;
  công cộng chức năng lấy Sal(){ 
  trở lại $cái này ->sal;
 
}
lớp học Giám đốc mở rộng người lao động {
  được bảo vệ $ sẽ =5000;
  công cộng chức năng getParentSal(){
  trở lại $cái này ->sal;
  }
}
$quản lý = mới Giám đốc();
tiếng vọng "PHP" .phpversion(). "
"
;
tiếng vọng $quản lý ->getSal();
 
?>

Kết quả chạy chương trình:

Phiên bản PHP 5.2.9

3000 。

Thay đổi thuộc tính $sal của lớp cha thành protected và lớp con sẽ ghi đè các thuộc tính của lớp cha. Chỉ có một $sal trong bộ nhớ.

?
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
lớp học người lao động{
  được bảo vệ $ sẽ =3000;
  công cộng chức năng lấy Sal(){ 
  trở lại $cái này ->sal;
 
}
lớp học Giám đốc mở rộng người lao động {
  được bảo vệ $ sẽ =5000;
  công cộng chức năng getParentSal(){
  trở lại $cái này ->sal;
  }
}
$quản lý = mới Giám đốc();
tiếng vọng "PHP" .phpversion(). "
"
;
tiếng vọng $quản lý ->getSal();
 
?>

Kết quả chạy chương trình:

Phiên bản PHP 5.2.9

5000 。

Nếu bạn đã học Java, bạn sẽ thấy điều này thật khó hiểu.

Trong Java khi một lớp con được tạo, các thuộc tính và phương thức của lớp cha cũng được tạo trong bộ nhớ và thậm chí cả hàm tạo cũng được gọi.

Điều này không xảy ra với PHP5. PHP5 sử dụng parent:: thay vì parent-> để gọi lớp cha. Điều này đủ để cho thấy rằng PHP5 không muốn lớp cha được tạo trong bộ nhớ. PHP5 muốn việc kế thừa đơn giản hơn Java.

Chỉ cần làm quen với nó.

Lệnh gọi như vậy sẽ khiến PHP5.1.1 bị tràn. Không biết phiên bản mới có vấn đề gì không.

?
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
lớp học người lao động{
  riêng tư $ sẽ =3000;
  công cộng chức năng lấy Sal(){ 
  trở lại cha mẹ:: $cái này ->sal;
 
}
 
lớp học Giám đốc mở rộng người lao động {
  được bảo vệ $ sẽ =5000;
  công cộng chức năng lấy Sal(){ 
  trở lại cha mẹ:: $cái này ->getSal();
  }
}
$quản lý = mới Giám đốc();
tiếng vọng "PHP" .phpversion(). "
"
;
tiếng vọng $quản lý ->getSal();
 
?>

Chỉ cần thay đổi dòng 12 thành thế này. Hãy chú ý đến sự so sánh.

trả về parent:: getSal(),

Mã như vậy gây ra đệ quy, với các phương thức gọi lớp con của lớp cha và các phương thức gọi lớp cha của lớp con.

trả về parent::$this->getSal(),

Tóm tắt.

Trên đây là toàn bộ nội dung bài viết này hy vọng nội dung bài viết có thể mang lại sự giúp đỡ nào đó cho việc học tập hoặc làm việc của mọi người. Nếu có thắc mắc gì có thể để lại tin nhắn để trao đổi.

Cuối cùng, bài viết về parent::keyword trong học tập hướng đối tượng PHP kết thúc ở đây. Nếu bạn muốn biết thêm về parent::keyword trong học tập hướng đối tượng PHP, vui lòng tìm kiếm bài viết CFSDN hoặc tiếp tục duyệt các bài viết liên quan. Tôi hy vọng bạn sẽ ủng hộ blog của tôi trong tương lai! .

27 4 0
qq735679552
Hồ sơ

Tôi là một lập trình viên xuất sắc, rất giỏi!

Nhận phiếu giảm giá taxi Didi miễn phí
Phiếu giảm giá taxi Didi
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