Citat:
samilen: >
...Recimo da hoću da svaka podklasa ima static promenljivu/metodu istog naziva,
ali da svaka instanca ima različitu vrednost.
Ovde nešto ne štima. Ako hoćeš da svaka instanca ima različitu vrednost, onda to nije static, već "normalna" promenljiva ili metoda.
A, da se vratimo na prvobitno pitanje.
Ako u klasi A imaš neki static član, on je zajednički za sve instance te klase i njenih potklasa, naravno pod uslovom da potklasa B nema član istog imena, a takođe static.
A to je i vrlo logično.
Static čan se "instancira" kreiranjem prve instance klase. Prilikom instanciranja objekta potklase, konstruktor natklase se takođe izvršava i to dovodi do "stvaranja" static člana. To važi za polja. Za metode je nevažno, jer su static metode zapravo funkcije koje pozivaš sa Klasa.metoda() i njih možeš prebaciti i u neku desetu klasu, ništa se ne menja. Static metode se programiraju u oviru neke klase radi preglednije i bolje organizacije koda, a ne zato što im je tu prirodno mesto, dok se "obične" metode programiraju u okviru neke klase jer definišu ponašanje objekta te klase.