Różnica pomiędzy class variables
i instance
zmienne, to po prostu kwestia who knows what?
.
instance variable
Jest jedynym znanym (= związany ) z tym konkretny przykład - stąd jego nazwa.
public class Person {
private String firstName;
private String lastName;
[...]
}
Definicja klasy przypomina plan budowy konkretnych obiektów. Być może ten punkt nieco Cię myli . Ale pisząc to w ten sposób, każda zmienna byłaby przypisana do konkretnego obiektu: np. Każda osoba ma swoje imię
Z class variable
drugiej strony - jak sama nazwa wskazuje - jest znana każdemu członkowi klasy; lub technicznie: jest znany / związany na poziomie klasy . Typowym przykładem jest licznik liczby obiektów, które utworzyłeś - chociaż jest to bardzo problematyczny przykład; ale to nie ma znaczenia na tym wczesnym etapie.
public class Person {
private String firstName;
private String lastName;
[...]
static int numberOfPersons = 0
}
numberOfPersons
jest zadeklarowane static
jako słowo kluczowe do rozróżnienia między class variables
i instance variabes
. Zmienna jest zadeklarowana tak jak inne w definicji klasy. Ale static
słowo kluczowe sygnalizuje, że jest inaczej.
firstName
, lastName
są zmiennymi instancji i są powiązane z tą konkretną instancją
numberOfPersons
jest powiązany z klasą, aby każda instancja mogła uzyskać dostęp do tej zmiennej.
tl; dr
Miejscem definiowania zmiennych jest definicja klasy.
Zmienne klasy są znane na poziomie klasy / powiązane z poziomem klasy, tj. Każda konkretna instancja ma do niego dostęp. Aby zdefiniować zmienną klasową, użyj słowa kluczowego static
.
Zmienne instancji są znane tylko na poziomie instancji. Zdefiniujesz je bez static
słowa kluczowego.
Dalsza dokumentacja dla Java jest tutaj