Làm cách nào để truy cập một phương thức được bảo vệ trong PHP?

Công cụ sửa đổi truy cập trong Java giúp hạn chế phạm vi của một lớp, hàm tạo, biến, phương thức hoặc thành viên dữ liệu. Có bốn loại công cụ sửa đổi truy cập có sẵn trong java. Quyền truy cập của các công cụ sửa đổi khác nhau có thể được nhìn thấy trong bảng dưới đây như sau.  

Từ khóa được bảo vệ trong Java đề cập đến một trong những công cụ sửa đổi quyền truy cập của nó. Các phương thức hoặc thành viên dữ liệu được khai báo là được bảo vệ có thể được truy cập từ

  • Trong cùng một lớp
  • Các lớp con của cùng gói
  • Các lớp khác nhau của cùng một gói
  • Các lớp con của các gói khác nhau

Có một số điểm quan trọng cần ghi nhớ như sau.  

  1. Nếu một người muốn truy cập một công cụ sửa đổi được bảo vệ bên ngoài gói, thì cần phải áp dụng tính kế thừa
  2. Bảo vệ một hàm tạo ngăn người dùng tạo thể hiện của lớp, bên ngoài gói
  3. Trong quá trình ghi đè, khi một biến hoặc phương thức được bảo vệ, nó có thể được ghi đè sang lớp con khác chỉ bằng cách sử dụng công cụ sửa đổi công khai hoặc được bảo vệ
  4. Lớp bên ngoài và giao diện không thể được bảo vệ

Thực hiện. Ở đây chúng tôi sẽ tạo hai gói p1 và p2. Lớp A trong p1 được công khai, để truy cập nó trong p2. Phương thức được hiển thị trong lớp A được bảo vệ và lớp B được kế thừa từ lớp A và phương thức được bảo vệ này sau đó được truy cập bằng cách tạo một đối tượng của lớp B

ví dụ 1. gói p1

Java




// Java program to illustrate 

// protected modifier 

 

package

Exception in thread "main" 
java.lang.RuntimeException: 
Uncompilable source code - 
Erroneous sym type: p2.B.display
    at p2.B.main[B.java:16]
0

 

Exception in thread "main" 
java.lang.RuntimeException: 
Uncompilable source code - 
Erroneous sym type: p2.B.display
    at p2.B.main[B.java:16]
2

Exception in thread "main" 
java.lang.RuntimeException: 
Uncompilable source code - 
Erroneous sym type: p2.B.display
    at p2.B.main[B.java:16]
3
Exception in thread "main" 
java.lang.RuntimeException: 
Uncompilable source code - 
Erroneous sym type: p2.B.display
    at p2.B.main[B.java:16]
4
Exception in thread "main" 
java.lang.RuntimeException: 
Uncompilable source code - 
Erroneous sym type: p2.B.display
    at p2.B.main[B.java:16]
5

Exception in thread "main" 
java.lang.RuntimeException: 
Uncompilable source code - 
Erroneous sym type: p2.B.display
    at p2.B.main[B.java:16]
6_______0_______7
Exception in thread "main" 
java.lang.RuntimeException: 
Uncompilable source code - 
Erroneous sym type: p2.B.display
    at p2.B.main[B.java:16]
8
Exception in thread "main" 
java.lang.RuntimeException: 
Uncompilable source code - 
Erroneous sym type: p2.B.display
    at p2.B.main[B.java:16]
9

Exception in thread "main" 
java.lang.RuntimeException: 
Uncompilable source code - 
Erroneous sym type: p2.B.display
    at p2.B.main[B.java:16]
6
Exception in thread "main" 
java.lang.RuntimeException: 
Uncompilable source code - 
Erroneous sym type: p2.B.display
    at p2.B.main[B.java:16]
1

Exception in thread "main" 
java.lang.RuntimeException: 
Uncompilable source code - 
Erroneous sym type: p2.B.display
    at p2.B.main[B.java:16]
2
Exception in thread "main" 
java.lang.RuntimeException: 
Uncompilable source code - 
Erroneous sym type: p2.B.display
    at p2.B.main[B.java:16]
3_______0_______4
Exception in thread "main" 
java.lang.RuntimeException: 
Uncompilable source code - 
Erroneous sym type: p2.B.display
    at p2.B.main[B.java:16]
5

Exception in thread "main" 
java.lang.RuntimeException: 
Uncompilable source code - 
Erroneous sym type: p2.B.display
    at p2.B.main[B.java:16]
6_______0_______7

Exception in thread "main" 
java.lang.RuntimeException: 
Uncompilable source code - 
Erroneous sym type: p2.B.display
    at p2.B.main[B.java:16]
8

 
gói p2

Java




Exception in thread "main" 
java.lang.RuntimeException: 
Uncompilable source code - 
Erroneous sym type: p2.B.display
    at p2.B.main[B.java:16]
9

GeeksforGeeks
0

 

package

GeeksforGeeks
3

 

GeeksforGeeks
5

GeeksforGeeks
6
GeeksforGeeks
7

 

GeeksforGeeks
9

Exception in thread "main" 
java.lang.RuntimeException: 
Uncompilable source code - 
Erroneous sym type: p2.B.display
    at p2.B.main[B.java:16]
4
GeeksforGeeks
1
GeeksforGeeks
2
GeeksforGeeks
3

Exception in thread "main" 
java.lang.RuntimeException: 
Uncompilable source code - 
Erroneous sym type: p2.B.display
    at p2.B.main[B.java:16]
6_______0_______3
GeeksforGeeks
6
Exception in thread "main" 
java.lang.RuntimeException: 
Uncompilable source code - 
Erroneous sym type: p2.B.display
    at p2.B.main[B.java:16]
8
GeeksforGeeks
8

Exception in thread "main" 
java.lang.RuntimeException: 
Uncompilable source code - 
Erroneous sym type: p2.B.display
    at p2.B.main[B.java:16]
6
Class C
0

Exception in thread "main" 
java.lang.RuntimeException: 
Uncompilable source code - 
Erroneous sym type: p2.B.display
    at p2.B.main[B.java:16]
2
Class C
2
Class C
3
Class C
4

Exception in thread "main" 
java.lang.RuntimeException: 
Uncompilable source code - 
Erroneous sym type: p2.B.display
    at p2.B.main[B.java:16]
2
Class C
6

Exception in thread "main" 
java.lang.RuntimeException: 
Uncompilable source code - 
Erroneous sym type: p2.B.display
    at p2.B.main[B.java:16]
6_______0_______8

Exception in thread "main" 
java.lang.RuntimeException: 
Uncompilable source code - 
Erroneous sym type: p2.B.display
    at p2.B.main[B.java:16]
8

đầu ra.  

GeeksforGeeks

Bây giờ chúng ta thử phân tích các điều kiện tiếp cận khác nhau.  

  1. Gọi hàm được bảo vệ mà không mở rộng lớp cha
  2. Truy cập một lớp được bảo vệ
  3. Truy cập chức năng hiển thị từ cùng một gói nhưng khác nhau
  4. Truy cập chức năng hiển thị từ một gói khác
  5. Truy cập một lớp được bảo vệ bằng cách ghi đè lên lớp con trong cùng một gói

A. Gọi chức năng được bảo vệ mà không cần mở rộng lớp cha

Ở đây chúng ta sẽ tạo 2 package p1 và p2. Lớp A trong p1 được công khai, để truy cập nó trong p2. Phương thức hiển thị trong lớp A được bảo vệ. Nhưng đoạn mã này sẽ không thể truy cập vào chức năng “hiển thị” do lớp con chưa kế thừa giá trị của nó từ lớp chính và sẽ ném ra một ngoại lệ như được hiển thị.  

Ví dụ 1-A. gói p1

Java




// Java program to illustrate 0

 

package // Java program to illustrate 3

 

// Java program to illustrate 5

Exception in thread "main" 
java.lang.RuntimeException: 
Uncompilable source code - 
Erroneous sym type: p2.B.display
    at p2.B.main[B.java:16]
3
Exception in thread "main" 
java.lang.RuntimeException: 
Uncompilable source code - 
Erroneous sym type: p2.B.display
    at p2.B.main[B.java:16]
4
GeeksforGeeks
3

 

Exception in thread "main" 
java.lang.RuntimeException: 
Uncompilable source code - 
Erroneous sym type: p2.B.display
    at p2.B.main[B.java:16]
6// protected modifier 1

Exception in thread "main" 
java.lang.RuntimeException: 
Uncompilable source code - 
Erroneous sym type: p2.B.display
    at p2.B.main[B.java:16]
6_______0_______7
Exception in thread "main" 
java.lang.RuntimeException: 
Uncompilable source code - 
Erroneous sym type: p2.B.display
    at p2.B.main[B.java:16]
8 // protected modifier 5

Exception in thread "main" 
java.lang.RuntimeException: 
Uncompilable source code - 
Erroneous sym type: p2.B.display
    at p2.B.main[B.java:16]
6
Class C
0

Exception in thread "main" 
java.lang.RuntimeException: 
Uncompilable source code - 
Erroneous sym type: p2.B.display
    at p2.B.main[B.java:16]
2// protected modifier 9

Exception in thread "main" 
java.lang.RuntimeException: 
Uncompilable source code - 
Erroneous sym type: p2.B.display
    at p2.B.main[B.java:16]
2
Exception in thread "main" 
java.lang.RuntimeException: 
Uncompilable source code - 
Erroneous sym type: p2.B.display
    at p2.B.main[B.java:16]
3
Exception in thread "main" 
java.lang.RuntimeException: 
Uncompilable source code - 
Erroneous sym type: p2.B.display
    at p2.B.main[B.java:16]
4 3

Exception in thread "main" 
java.lang.RuntimeException: 
Uncompilable source code - 
Erroneous sym type: p2.B.display
    at p2.B.main[B.java:16]
6_______0_______8

Exception in thread "main" 
java.lang.RuntimeException: 
Uncompilable source code - 
Erroneous sym type: p2.B.display
    at p2.B.main[B.java:16]
8

Ví dụ 1-B. gói p2

Java




Exception in thread "main" 
java.lang.RuntimeException: 
Uncompilable source code - 
Erroneous sym type: p2.B.display
    at p2.B.main[B.java:16]
9

GeeksforGeeks
0

 

package

GeeksforGeeks
3

 

GeeksforGeeks
5

GeeksforGeeks
6
GeeksforGeeks
7

 

GeeksforGeeks
9

Exception in thread "main" 
java.lang.RuntimeException: 
Uncompilable source code - 
Erroneous sym type: p2.B.display
    at p2.B.main[B.java:16]
4 package9

Exception in thread "main" 
java.lang.RuntimeException: 
Uncompilable source code - 
Erroneous sym type: p2.B.display
    at p2.B.main[B.java:16]
6_______0_______3
GeeksforGeeks
6
Exception in thread "main" 
java.lang.RuntimeException: 
Uncompilable source code - 
Erroneous sym type: p2.B.display
    at p2.B.main[B.java:16]
8
GeeksforGeeks
8

Exception in thread "main" 
java.lang.RuntimeException: 
Uncompilable source code - 
Erroneous sym type: p2.B.display
    at p2.B.main[B.java:16]
6
Class C
0

Exception in thread "main" 
java.lang.RuntimeException: 
Uncompilable source code - 
Erroneous sym type: p2.B.display
    at p2.B.main[B.java:16]
2
Class C
2
Class C
3
Class C
4

Exception in thread "main" 
java.lang.RuntimeException: 
Uncompilable source code - 
Erroneous sym type: p2.B.display
    at p2.B.main[B.java:16]
2
Class C
6

Exception in thread "main" 
java.lang.RuntimeException: 
Uncompilable source code - 
Erroneous sym type: p2.B.display
    at p2.B.main[B.java:16]
6_______0_______8

Exception in thread "main" 
java.lang.RuntimeException: 
Uncompilable source code - 
Erroneous sym type: p2.B.display
    at p2.B.main[B.java:16]
8

đầu ra.  

Exception in thread "main" 
java.lang.RuntimeException: 
Uncompilable source code - 
Erroneous sym type: p2.B.display
    at p2.B.main[B.java:16]

B. Truy cập một lớp được bảo vệ

Ở đây chúng tôi đang cố gắng truy cập một lớp được bảo vệ A dẫn đến lỗi.  

Ví dụ A

Java




Exception in thread "main" 
java.lang.RuntimeException: 
Uncompilable source code - 
Erroneous sym type: p2.B.display
    at p2.B.main[B.java:16]
9

GeeksforGeeks
0

 

package // Java program to illustrate 3

 

// Java program to illustrate 5

Exception in thread "main" 
java.lang.RuntimeException: 
Uncompilable source code - 
Erroneous sym type: p2.B.display
    at p2.B.main[B.java:16]
7
Exception in thread "main" 
java.lang.RuntimeException: 
Uncompilable source code - 
Erroneous sym type: p2.B.display
    at p2.B.main[B.java:16]
4
GeeksforGeeks
3

Exception in thread "main" 
java.lang.RuntimeException: 
Uncompilable source code - 
Erroneous sym type: p2.B.display
    at p2.B.main[B.java:16]
6
Exception in thread "main" 
java.lang.RuntimeException: 
Uncompilable source code - 
Erroneous sym type: p2.B.display
    at p2.B.main[B.java:16]
8 // protected modifier 5

Exception in thread "main" 
java.lang.RuntimeException: 
Uncompilable source code - 
Erroneous sym type: p2.B.display
    at p2.B.main[B.java:16]
6
Class C
0

Exception in thread "main" 
java.lang.RuntimeException: 
Uncompilable source code - 
Erroneous sym type: p2.B.display
    at p2.B.main[B.java:16]
2
Exception in thread "main" 
java.lang.RuntimeException: 
Uncompilable source code - 
Erroneous sym type: p2.B.display
    at p2.B.main[B.java:16]
3
Exception in thread "main" 
java.lang.RuntimeException: 
Uncompilable source code - 
Erroneous sym type: p2.B.display
    at p2.B.main[B.java:16]
4 3

Exception in thread "main" 
java.lang.RuntimeException: 
Uncompilable source code - 
Erroneous sym type: p2.B.display
    at p2.B.main[B.java:16]
6_______0_______8

Exception in thread "main" 
java.lang.RuntimeException: 
Uncompilable source code - 
Erroneous sym type: p2.B.display
    at p2.B.main[B.java:16]
8

Ví dụ B. gói p2

Java




Exception in thread "main" 
java.lang.RuntimeException: 
Uncompilable source code - 
Erroneous sym type: p2.B.display
    at p2.B.main[B.java:16]
9

GeeksforGeeks
0

 

package

GeeksforGeeks
3

 

GeeksforGeeks
5

GeeksforGeeks
6
GeeksforGeeks
7

 

GeeksforGeeks
9

Exception in thread "main" 
java.lang.RuntimeException: 
Uncompilable source code - 
Erroneous sym type: p2.B.display
    at p2.B.main[B.java:16]
4
GeeksforGeeks
1
GeeksforGeeks
2
GeeksforGeeks
3

Exception in thread "main" 
java.lang.RuntimeException: 
Uncompilable source code - 
Erroneous sym type: p2.B.display
    at p2.B.main[B.java:16]
6_______0_______3
GeeksforGeeks
6
Exception in thread "main" 
java.lang.RuntimeException: 
Uncompilable source code - 
Erroneous sym type: p2.B.display
    at p2.B.main[B.java:16]
8
GeeksforGeeks
8

Exception in thread "main" 
java.lang.RuntimeException: 
Uncompilable source code - 
Erroneous sym type: p2.B.display
    at p2.B.main[B.java:16]
6
Class C
0

Exception in thread "main" 
java.lang.RuntimeException: 
Uncompilable source code - 
Erroneous sym type: p2.B.display
    at p2.B.main[B.java:16]
2
Class C
2
Class C
3
Class C
4

Exception in thread "main" 
java.lang.RuntimeException: 
Uncompilable source code - 
Erroneous sym type: p2.B.display
    at p2.B.main[B.java:16]
2
Class C
6

Exception in thread "main" 
java.lang.RuntimeException: 
Uncompilable source code - 
Erroneous sym type: p2.B.display
    at p2.B.main[B.java:16]
6_______0_______8

Exception in thread "main" 
java.lang.RuntimeException: 
Uncompilable source code - 
Erroneous sym type: p2.B.display
    at p2.B.main[B.java:16]
8

đầu ra. Điều này sẽ ném một lỗi

Exception in thread "main" 
java.lang.RuntimeException: 
Uncompilable source code - 
Erroneous sym type: p2.B.display
    at p2.B.main[B.java:16]

C. Truy cập chức năng hiển thị từ cùng một gói nhưng khác lớp

Thực hiện. Trong ví dụ này, chúng ta có quyền truy cập vào một chức năng được bảo vệ “hiển thị” từ cùng một gói nhưng khác lớp

Ví dụ A. gói p1

Java




Exception in thread "main" 
java.lang.RuntimeException: 
Uncompilable source code - 
Erroneous sym type: p2.B.display
    at p2.B.main[B.java:16]
9

GeeksforGeeks
0

 

package // Java program to illustrate 3

 

// Java program to illustrate 5

Exception in thread "main" 
java.lang.RuntimeException: 
Uncompilable source code - 
Erroneous sym type: p2.B.display
    at p2.B.main[B.java:16]
3
Exception in thread "main" 
java.lang.RuntimeException: 
Uncompilable source code - 
Erroneous sym type: p2.B.display
    at p2.B.main[B.java:16]
4
GeeksforGeeks
3

Exception in thread "main" 
java.lang.RuntimeException: 
Uncompilable source code - 
Erroneous sym type: p2.B.display
    at p2.B.main[B.java:16]
6_______0_______7
Exception in thread "main" 
java.lang.RuntimeException: 
Uncompilable source code - 
Erroneous sym type: p2.B.display
    at p2.B.main[B.java:16]
8 // protected modifier 5

Exception in thread "main" 
java.lang.RuntimeException: 
Uncompilable source code - 
Erroneous sym type: p2.B.display
    at p2.B.main[B.java:16]
6
Class C
0

Exception in thread "main" 
java.lang.RuntimeException: 
Uncompilable source code - 
Erroneous sym type: p2.B.display
    at p2.B.main[B.java:16]
2
Exception in thread "main" 
java.lang.RuntimeException: 
Uncompilable source code - 
Erroneous sym type: p2.B.display
    at p2.B.main[B.java:16]
3
Exception in thread "main" 
java.lang.RuntimeException: 
Uncompilable source code - 
Erroneous sym type: p2.B.display
    at p2.B.main[B.java:16]
4 3

Exception in thread "main" 
java.lang.RuntimeException: 
Uncompilable source code - 
Erroneous sym type: p2.B.display
    at p2.B.main[B.java:16]
6_______0_______8

Exception in thread "main" 
java.lang.RuntimeException: 
Uncompilable source code - 
Erroneous sym type: p2.B.display
    at p2.B.main[B.java:16]
8

Ví dụ B. lớp C

Java




Exception in thread "main" 
java.lang.RuntimeException: 
Uncompilable source code - 
Erroneous sym type: p2.B.display
    at p2.B.main[B.java:16]
9

GeeksforGeeks
0

 

Exception in thread "main" 
java.lang.RuntimeException: 
Uncompilable source code - 
Erroneous sym type: p2.B.display
    at p2.B.main[B.java:16]
95

Exception in thread "main" 
java.lang.RuntimeException: 
Uncompilable source code - 
Erroneous sym type: p2.B.display
    at p2.B.main[B.java:16]
3
Exception in thread "main" 
java.lang.RuntimeException: 
Uncompilable source code - 
Erroneous sym type: p2.B.display
    at p2.B.main[B.java:16]
4
Exception in thread "main" 
java.lang.RuntimeException: 
Uncompilable source code - 
Erroneous sym type: p2.B.display
    at p2.B.main[B.java:16]
98

Exception in thread "main" 
java.lang.RuntimeException: 
Uncompilable source code - 
Erroneous sym type: p2.B.display
    at p2.B.main[B.java:16]
6_______0_______3
GeeksforGeeks
6
Exception in thread "main" 
java.lang.RuntimeException: 
Uncompilable source code - 
Erroneous sym type: p2.B.display
    at p2.B.main[B.java:16]
8
GeeksforGeeks
8

Exception in thread "main" 
java.lang.RuntimeException: 
Uncompilable source code - 
Erroneous sym type: p2.B.display
    at p2.B.main[B.java:16]
6
Class C
0

Exception in thread "main" 
java.lang.RuntimeException: 
Uncompilable source code - 
Erroneous sym type: p2.B.display
    at p2.B.main[B.java:16]
2
Exception in thread "main" 
java.lang.RuntimeException: 
Uncompilable source code - 
Erroneous sym type: p2.B.display
    at p2.B.main[B.java:16]
07
Class C
3
Exception in thread "main" 
java.lang.RuntimeException: 
Uncompilable source code - 
Erroneous sym type: p2.B.display
    at p2.B.main[B.java:16]
09

Exception in thread "main" 
java.lang.RuntimeException: 
Uncompilable source code - 
Erroneous sym type: p2.B.display
    at p2.B.main[B.java:16]
2
Class C
6

Exception in thread "main" 
java.lang.RuntimeException: 
Uncompilable source code - 
Erroneous sym type: p2.B.display
    at p2.B.main[B.java:16]
6_______0_______8

Exception in thread "main" 
java.lang.RuntimeException: 
Uncompilable source code - 
Erroneous sym type: p2.B.display
    at p2.B.main[B.java:16]
8

đầu ra.  

GeeksforGeeks

D. Truy cập chức năng hiển thị từ một gói khác

Ở đây, chúng tôi đã cố gắng truy cập màn hình chức năng được bảo vệ từ một gói khác bằng cách kế thừa và mở rộng lớp.  

Làm cách nào để truy cập chức năng được bảo vệ trong PHP?

Từ khóa được bảo vệ là công cụ sửa đổi quyền truy cập . Nó đánh dấu một thuộc tính hoặc phương thức là được bảo vệ. Các thuộc tính và phương thức được bảo vệ chỉ có thể được sử dụng bởi lớp trong đó thuộc tính hoặc phương thức được định nghĩa và bất kỳ lớp nào dẫn xuất từ ​​nó. Bất kỳ mã nào khác không thể sử dụng chúng.

Bạn có thể truy cập các phương thức được bảo vệ không?

công cụ sửa đổi truy cập được bảo vệ cho phép các lớp con của bạn nằm ngoài gói lớp cha của bạn nhưng vẫn kế thừa các phần của lớp bao gồm các phương thức và hàm tạo. Cách duy nhất để lớp con có thể truy cập các phương thức được bảo vệ là kế thừa .

Bạn có thể ghi đè một phương thức được bảo vệ PHP không?

Ghi đè phương thức được bảo vệ bằng phương thức công khai trong lớp con giúp phương thức này có thể truy cập được từ mọi nơi. Điều này vi phạm nguyên tắc đóng gói và được coi là thông lệ xấu. Xem Phương thức hiển thị [php. mạng] để biết chi tiết

Làm cách nào để sử dụng công cụ sửa đổi quyền truy cập được bảo vệ trong PHP?

PHP - Công cụ sửa đổi truy cập .
public - thuộc tính hoặc phương thức có thể được truy cập từ mọi nơi. Đây là mặc định
được bảo vệ - thuộc tính hoặc phương thức có thể được truy cập trong lớp và bởi các lớp dẫn xuất từ ​​lớp đó
private - thuộc tính hoặc phương thức CHỈ có thể được truy cập trong lớp

Chủ Đề