/ / Czy domyślnie są to pola prywatne? - java

Czy pola w Javie są domyślnie prywatne? - java

Dlaczego widzę tak wiele przykładów, które są typem prywatnym przed polem, podczas gdy pola afaik są domyślnie prywatne.

private int number;
int number;
//Both of these are the same afaik. Yet, in a ton of examples private gets fully written, why?

Odpowiedzi:

16 dla odpowiedzi nr 1

Nie, nie są one takie same, brak modyfikatora dostępu jest domyślnie pakietem prywatnym.

Zobacz: http://docs.oracle.com/javase/tutorial/java/javaOO/accesscontrol.html

Modifier    Class   Package Subclass    World
public        Y        Y       Y         Y
protected     Y        Y       Y         N
no modifier   Y        Y       N         N
private       Y        N       N         N

Wyjątkiem od tej reguły jest to interface podpisy metod i pól są public gdy modyfikator dostępu zostanie pominięty: http://docs.oracle.com/javase/tutorial/java/IandI/interfaceDef.html


2 dla odpowiedzi nr 2

Domyślnie nie jest prywatny, jest "pakietem" (bez słowa kluczowego).

Wszystkie klasy w tym samym pakiecie widzą pole.


2 dla odpowiedzi nr 3

To nie to samo. W tym przypadku nie określając modyfikatora dostępu w Javie privateoznacza, że ​​używany jest domyślny modyfikator dostępu. Oznacza to, że wszystko na tej samej paczce z twoją klasą ma dostęp do tych członków.

The private modyfikator dostępu oznacza, że ​​tylko ta konkretna klasa będzie mieć dostęp do jej członków.

Dzieje się tak dlatego, że klasa chroni dane i zapobiega przypadkowemu uszkodzeniu danych.

Należy zapoznać się to po więcej informacji.

Teraz, jeśli chcesz uzyskać dostęp do tych członków, musisz utworzyć metody getter, na przykład:

public class foo{

private int x = 5;

public int getX(){ return x;}
}

Podobnie, jeśli chcesz zmienić wartość członków, możesz utworzyć metody ustawiania:

 public int setX(int x){ this.x = x;}

1 dla odpowiedzi nr 4

Jeśli nie podasz żadnego modyfikatorawłaściwość / metoda, ma domyślny modyfikator. Co oznacza, że ​​dostęp do niego można uzyskać tylko w tej samej klasie lub pakiecie. Natomiast prywatny modyfikator ogranicza dostęp do właściwości w ramach zdefiniowanej klasy.


0 dla odpowiedzi № 5

Powyższy link jest prawidłowy i powinieneś go przeczytaćzobacz, który modyfikator dostępu można zastosować do klasy, struktury, zmiennej i etc .... Ale w języku C #, gdy modyfikator dostępu nie jest dostępny, tak jak w drugim odwołaniu, domyślnie modyfikator jest prywatny, a nie wewnętrzny. Wewnętrzny jest dla klas i struktur.

Dla Java jest widoczny pakiet

na przykład

klasa A{}

jest taki sam z

klasa wewnętrzna A {}