Legjobb válasz
Ja, teljesen különböző fogalmak.
A statikusnak jelölt tag osztályhoz tartozik, nem pedig bármely konkrét példányhoz. Néha előfordulhat, hogy az osztályoknak csak statikus tagjai vannak, nyilvánvaló példa a java.lang.Double osztály, amely kettős primitíveket „dobozol”: egy példány metódussal megkaphatja az egyedi kettős értékét (myDouble.doubleValue()
), de statikus tagokon keresztül (Double.MAX\_VALUE
) “univerzális” dolgokat szerezhet.
A véglegesen megjelölt tagnak * nem lehet értéke (ez az értéke) ha primitív, vagy annak hivatkozása ha objektum) inicializálása után megváltozott. Előfordulhat, hogy továbbra is módosíthatja egy objektum tulajdonságait (lehet, hogy változtatható ) de nem tudta * kicserélni az objektumot egy másikra. (* Technikailag „megcsalhat” reflexióval, bájtkód-manipulációval vagy a szabályok megsértésének más módjaival, de ha ezeket megteszi, akkor vélhetően ismeri “csalás”.)
Válasz
Tudni, mikor kell használni
private static final X x;
Tudnia kell, hogy mit használnak ezek a kulcsszavak.
Lássuk
- privát – Akkor használják, ha egy osztály bizonyos tagját korlátozni szeretné ne legyen elérhető az adott osztályon kívül.
- statikus – Ha bármelyik tagot statikusnak nyilvánítja, akkor az az osztályához kapcsolódik, és nem objektum. Ennek egyszerűsítése érdekében a statikus tag inicializálódik, amikor az osztály betöltődik. Tehát, amikor frissíti az adott tag értékét, az összes hely, ahova hivatkoznak, szintén frissülni fog. Ezért a statikus taghoz osztálynévvel férünk hozzá, és nem az objektumaik, mivel a tag értéke ugyanaz marad objektumoktól függetlenül. >
- végleges – Ez a kulcsszó tagváltozókkal együtt használva meghatározza, hogy ha az osztály betöltődik és az értéket hozzárendelik, nem lehet megváltoztatni.
Tehát nézzük meg, mi történik amikor az alábbihoz hasonló változót deklarál:
private static final String PRIVATE\_STATIC\_FINAL\_STRING = "String";
Most
A PRIVATE\_STATIC\_FINAL\_STRING privátként van meghatározva, így nyert “ne legyen hozzáférhető rajta kívül” s deklaráló osztály. Statikusként is definiálva van, így értéke ugyanaz marad, függetlenül az osztály objektumaitól. És véglegesként definiálva van, tehát ha az osztály betöltődik, akkor az értéke nem változik.
Ezért a PRIVATE\_STATIC\_FINAL\_STRING módosíthatatlan osztályszintű karakterláncként fog működni, amely “nem lesz elérhető rajta kívül” deklaráló osztályként.
Remélem, hogy ez segít tisztázni a kétségeit. Ha további segítségre van szüksége, hozzám fordulhat, és megpróbálok minél többet segíteni.
Sok sikert és boldog tanulást!