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.
- 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
- 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
- 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ệ
- 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
GeeksforGeeks0
package
GeeksforGeeks3
GeeksforGeeks5
GeeksforGeeks6
GeeksforGeeks7
GeeksforGeeks9
Exception in thread "main" java.lang.RuntimeException: Uncompilable source code - Erroneous sym type: p2.B.display at p2.B.main[B.java:16]4
GeeksforGeeks1
GeeksforGeeks2
GeeksforGeeks3
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
GeeksforGeeks6
Exception in thread "main" java.lang.RuntimeException: Uncompilable source code - Erroneous sym type: p2.B.display at p2.B.main[B.java:16]8
GeeksforGeeks8
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 C0
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 C2
Class C3
Class C4
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 C6
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.
- Gọi hàm được bảo vệ mà không mở rộng lớp cha
- Truy cập một lớp được bảo vệ
- Truy cập chức năng hiển thị từ cùng một gói nhưng khác nhau
- Truy cập chức năng hiển thị từ một gói khác
- 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
GeeksforGeeks3
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
1Exception 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
5Exception in thread "main" java.lang.RuntimeException: Uncompilable source code - Erroneous sym type: p2.B.display at p2.B.main[B.java:16]6
Class C0
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
9Exception 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
3Exception 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
GeeksforGeeks0
package
GeeksforGeeks3
GeeksforGeeks5
GeeksforGeeks6
GeeksforGeeks7
GeeksforGeeks9
Exception in thread "main" java.lang.RuntimeException: Uncompilable source code - Erroneous sym type: p2.B.display at p2.B.main[B.java:16]4
package
9Exception 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
GeeksforGeeks6
Exception in thread "main" java.lang.RuntimeException: Uncompilable source code - Erroneous sym type: p2.B.display at p2.B.main[B.java:16]8
GeeksforGeeks8
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 C0
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 C2
Class C3
Class C4
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 C6
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
GeeksforGeeks0
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
GeeksforGeeks3
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
5Exception in thread "main" java.lang.RuntimeException: Uncompilable source code - Erroneous sym type: p2.B.display at p2.B.main[B.java:16]6
Class C0
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
3Exception 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
GeeksforGeeks0
package
GeeksforGeeks3
GeeksforGeeks5
GeeksforGeeks6
GeeksforGeeks7
GeeksforGeeks9
Exception in thread "main" java.lang.RuntimeException: Uncompilable source code - Erroneous sym type: p2.B.display at p2.B.main[B.java:16]4
GeeksforGeeks1
GeeksforGeeks2
GeeksforGeeks3
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
GeeksforGeeks6
Exception in thread "main" java.lang.RuntimeException: Uncompilable source code - Erroneous sym type: p2.B.display at p2.B.main[B.java:16]8
GeeksforGeeks8
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 C0
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 C2
Class C3
Class C4
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 C6
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
GeeksforGeeks0
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
GeeksforGeeks3
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
5Exception in thread "main" java.lang.RuntimeException: Uncompilable source code - Erroneous sym type: p2.B.display at p2.B.main[B.java:16]6
Class C0
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
3Exception 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
GeeksforGeeks0
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
GeeksforGeeks6
Exception in thread "main" java.lang.RuntimeException: Uncompilable source code - Erroneous sym type: p2.B.display at p2.B.main[B.java:16]8
GeeksforGeeks8
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 C0
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 C3
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 C6
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.