Co to znaczy, że metoda, zmienna statyczna jest związana bezpośrednio z klasą a nie instancją obiektu
Znaczy to tyle, że zmienna statyczna jest jedna dla wszystkich obiektów danej klasy. Istnieje ona nawet przed powstaniem jakiegokolwiek obiektu tej klasy, dlatego jest zmienne statyczne są "ładowane" od razu przy starcie programu.
W praktyce przejawia się to tym, że do zmiennej statycznej można uzyskać dostęp nie tylko odnosząc się do niej przez instancję konkretnego obiektu, ale także przez nazwę klasy - nawet jeśli żaden obiekt jeszcze nie istnieje.
Jakakolwiek zmiana wartości zmiennej statycznej powoduje jej zmianę dla każdego obiektu danej klasy, dlatego zmiennych statycznych nie należy nadużywać, bo prowadzi to do błędów, np. Załóżmy że mamy klasę Person mającą statyczne pole age. Mając kilka obiektów takiej klasy i zmieniając wiek jednej osobie - zmieniamy go również pozostałym, bo dla każdego obiektu jest to ta sama zmienna.
A więc to, że zmienna statyczna jest związana bezpośrednio z klasą a nie instancją obiektu, oznacza tyle, że taka zmienna jest tworzona jedna, dla klasy, a nie osobna dla poszczególnych obiektów. Innymi słowy można powiedzieć, że zmienna statyczna klasy jest wspólna dla wszystkich obiektów tej klasy.
Podobnie z metodami statycznymi. Są one wspólne dla wszystkich obiektów danej klasy. Wiąże się to z tym, że nie mogą odnosić się do niestatycznych zmiennych. Tzn. statyczne metody mogą odwoływać się tylko do statycznych zmiennych danej klasy lub oczywiście innych klas. Jest to logiczne, ponieważ gdyby statyczna metoda mogła się odwoływać do niestatycznych zmiennych to nie mogłaby być wspólna dla wszystkich obiektów, bo odwoływałaby się do zmiennych, które są unikalne dla każdego obiektu.
Statyczna metoda nie może też wywoływać niestatycznych metod, bo one mogą z kolei używać niestatycznych zmiennych.