Java'da bir yöntemin varsayılan kapsamı nedir?


166

Ben yazarsam:

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

varsayılan kapsamı doThis()nedir?

Halka açık? Korumalı? Özel?

Yanıtlar:


264

Varsayılan kapsam pakete özeldir. Aynı paketteki tüm sınıflar, yönteme / alana / sınıfa erişebilir. Özel paket, korunan ve genel kapsamlardan daha katıdır, ancak özel kapsamdan daha izinlidir.

Daha fazla bilgi:
http://docs.oracle.com/javase/tutorial/java/javaOO/accesscontrol.html
http://mindprod.com/jgloss/scope.html


2
"Paket varsayılanı daha katı ..."
reinaldoluckman

7
Ayrıca, "paket-özel" in harici birim testi için yöntemleri ortaya koyarken iyi bir kapsam olduğunu belirtmek gerekir.
Gary Rowe

1
Bu durumda, bir kütüphane ya da kullanıcıların kendi kodları için işlevsellik alacağı herhangi bir şey yaratmadığınız sürece neden herkese açık bir şey yapmak gerekir?
Daniel

2
@ user3858162 Önemsiz uygulamaların çoğu birden fazla pakette düzenlenmiştir, bu durumda diğer paketlerden çağrı yöntemlerini çağırmak için genel kapsam gereklidir.
Esko Luontola

19

Özel paket olarak tanımlanan herhangi bir şeye sınıfın kendisi, aynı paket içindeki diğer sınıflar erişebilir, ancak alt sınıflar tarafından değil, paketin dışında erişilemez.

Erişim seviyesi değiştiricilerinin kullanışlı bir tablosu için bu sayfaya bakın ...




1

Java 8, artık varsayılan kapsamla (ve yalnızca statik) bir arabirimin içindeki yöntemlerin uygulanmasına izin veriyor .


Sitemizi kullandığınızda şunları okuyup anladığınızı kabul etmiş olursunuz: Çerez Politikası ve Gizlilik Politikası.
Licensed under cc by-sa 3.0 with attribution required.