Phạm vi mặc định của một phương thức trong Java là gì?


165

Nếu tôi gõ:

 void doThis(){
     System.out.println("Hello Stackoverflow.");
 }

phạm vi mặc định là doThis()gì?

Công cộng? Được bảo vệ? Riêng tư?

Câu trả lời:


264

Phạm vi mặc định là gói riêng. Tất cả các lớp trong cùng một gói có thể truy cập phương thức / trường / lớp. Gói riêng tư chặt chẽ hơn phạm vi được bảo vệ và công khai, nhưng cho phép hơn phạm vi riêng tư.

Thêm thông tin:
http://docs.oracle.com/javase/tutorial/java/javaOO/accesscontrol.html
http://mindprod.com/jgloss/scope.html


2
"Mặc định gói chặt chẽ hơn ..."
reinaldoluckman

7
Cũng có thể đáng nói rằng "gói riêng tư" là một phạm vi tốt để sử dụng khi đưa ra các phương thức để thử nghiệm đơn vị bên ngoài.
Gary Rowe

1
Nếu đây là trường hợp, thì tại sao cần phải công khai một cái gì đó trừ khi bạn đang tạo thư viện hoặc bất cứ thứ gì mà người dùng sẽ nhận được chức năng cho mã của họ?
Daniel

2
@ user3858162 Hầu hết các ứng dụng không tầm thường được tổ chức thành nhiều gói, trong trường hợp đó phạm vi công cộng là cần thiết để gọi các phương thức gọi từ các gói khác.
Esko Luontola

19

Bất kỳ thứ gì được định nghĩa là gói riêng đều có thể được truy cập bởi chính lớp đó, các lớp khác trong cùng một gói, nhưng không nằm ngoài gói và không phải bởi các lớp con.

Xem trang này để biết bảng điều chỉnh mức truy cập tiện dụng ...


9

Không có công cụ sửa đổi truy cập, một thành viên lớp có thể truy cập trong toàn bộ gói mà nó được khai báo. Bạn có thể tìm hiểu thêm từ Đặc tả ngôn ngữ Java, §6.6.

Các thành viên của một giao diện luôn có thể truy cập công khai, cho dù được tuyên bố rõ ràng hay không.


5

Phạm vi mặc định là "mặc định". Thật kỳ lạ - xem các tài liệu tham khảo này để biết thêm.


3
Trên thực tế không phải vậy: đó là gói riêng tư
Maurice Perry

2
Tôi không thể xóa câu trả lời của mình vì nó đã được chấp nhận. Tôi khuyến khích Joe đi với câu trả lời của @ Esko!
Michael Haren

1
liên kết thứ hai bị hỏng (và btw rất dễ bỏ lỡ đó là hai liên kết)
idclev 463035818

1

Java 8 hiện cho phép thực hiện các phương thức bên trong một giao diện với phạm vi mặc định (và chỉ tĩnh).


0

Nếu bạn không cung cấp bất kỳ công cụ sửa đổi nào cho phương thức của mình thì theo mặc định, nó sẽ là Công cụ sửa đổi mặc định có phạm vi trong gói.
để biết thêm thông tin, bạn có thể tham khảo http://wiki.answers.com/Q/What_is_default_access_specifier_in_Java

Khi sử dụng trang web của chúng tôi, bạn xác nhận rằng bạn đã đọc và hiểu Chính sách cookieChính sách bảo mật của chúng tôi.
Licensed under cc by-sa 3.0 with attribution required.