modyfikatory poziomu dostępu określają, czy inne klasy mogą używać określonego pola lub wywoływać określoną metodę. Istnieją dwa poziomy kontroli dostępu:
- na najwyższym poziomie
public
lub package-private (bez jawnego modyfikatora). - na poziomie członka
public
,private
,protected
lub pakiet-prywatny (bez jawnego modyfikatora).,
klasa może być zadeklarowana za pomocą modyfikatora public
, w którym to przypadku klasa ta jest widoczna dla wszystkich klas wszędzie. Jeśli klasa nie ma modyfikatora (domyślnego, znanego również jako package-private), jest widoczna tylko w jej własnym pakiecie (pakiety są nazwane grupami powiązanych klas dowiesz się o nich w późniejszej lekcji.)
na poziomie member, możesz również użyć modyfikatora public
lub bez modyfikatora (package-private), tak jak w przypadku klas najwyższego poziomu i o tym samym znaczeniu., Dla członków są dwa dodatkowe modyfikatory dostępu: private
I protected
. Modyfikator private
określa, że członek może być dostępny tylko w jego własnej klasie. Modyfikatorprotected
określa, że członek może być dostępny tylko w ramach jego własnego pakietu (tak jak w pakiecie-private), a ponadto przez podklasę jego klasy w innym pakiecie.
poniższa tabela pokazuje dostęp do członków dozwolonych przez każdy modyfikator.,Modifier
public
protected
private
The first data column indicates whether the class itself has access to the member defined by the access level., Jak widać, Klasa zawsze ma dostęp do swoich członków. Druga kolumna wskazuje, czy klasy w tym samym pakiecie co Klasa (niezależnie od ich pochodzenia) mają dostęp do członka. Trzecia kolumna wskazuje, czy podklasy klasy zadeklarowanej poza tym pakietem mają dostęp do członka. Czwarta kolumna wskazuje, czy wszystkie klasy mają dostęp do członka.
poziomy dostępu wpływają na Ciebie na dwa sposoby., Po pierwsze, gdy używasz klas pochodzących z innego źródła, takich jak Klasy na platformie Java, poziomy dostępu określają, z których klas mogą korzystać twoje własne klasy. Po drugie, kiedy piszesz klasę, musisz zdecydować, jaki poziom dostępu powinna mieć każda zmienna członkowska i każda metoda w twojej klasie.
przyjrzyjmy się kolekcji klas i zobaczmy, jak poziomy dostępu wpływają na widoczność. Poniższy rysunek pokazuje cztery klasy w tym przykładzie i jak są ze sobą powiązane.,
klasy i pakiety przykładu używanego do zilustrowania poziomów dostępu
poniższa tabela pokazuje, gdzie Członkowie klasy Alpha są widoczni dla każdego z modyfikatorów dostępu, które można do nich zastosować.,ha
public
protected
private
If other programmers use your class, you want to ensure that errors from misuse cannot happen., Poziomy dostępu mogą ci w tym pomóc.
- użyj najbardziej restrykcyjnego poziomu dostępu, który ma sens dla danego członka. Użyj
private
, chyba że masz dobry powód, aby tego nie robić. - unikaj pól
public
z wyjątkiem stałych. (Wiele przykładów w samouczku wykorzystuje pola publiczne. Może to pomóc w zwięzłym zilustrowaniu niektórych punktów, ale nie jest zalecane dla kodu produkcyjnego.) Pola publiczne mają tendencję do łączenia cię z konkretną implementacją i ograniczają Twoją elastyczność w zmienianiu kodu.