Jaký je rozdíl mezi instancemi a statickými proměnnými s vhodným příkladem (programem)?


Odpověď 1:

Všichni dali pěkný příklad a vysvětlení. Budu pokračovat s jedním:

Proměnná instance je vlastnost každého objektu (instance) třídy.

Statická proměnná je vlastnost samotné třídy a nepatří k žádnému konkrétnímu objektu (instanci) této třídy.

Porovnání a kontrast:

  1. Statické proměnné se inicializují při načítání třídy. K instanci prostřednictvím objektů.Statická proměnná je přístupná pomocí názvu třídy. Například proměnný objekt musí být vytvořen a lze k němu přistupovat pouze prostřednictvím objektu. příklad

syntaxe se může v jednotlivých jazycích lišit

Class_A :: staticVariable // je přístupný

ObjClass_A = nový Class_A

ObjClass_A.instanceVariable

3. Statickou proměnnou lze inicializovat jednou. Je to tedy základní koncept v singletonovém vzoru.

4. Statická proměnná nemůže být součástí rozhraní pro abstraktní třídu, protože pro ně není přidělena paměť.



Odpověď 2:

Proměnná instance je vlastnost každého objektu (instance) třídy.

Statická proměnná je vlastnost samotné třídy a nepatří k žádnému konkrétnímu objektu (instanci) této třídy.

-

Příklad:

třída Zaměstnanec {
soukromý statický int zaměstnanecPočet = 0;
private String empName;
soukromé int empId;

// konstruktor
veřejný zaměstnanec (String eName, int eId) {
this.empName = eName;
this.empId = eId;
employeeCount ++;
}

public Employee addEmployee (String eName, int eId) {
vrátit nového zaměstnance (eName, eId);
}

public void deleteEmployee (int eId) {
zaměstnanecPočet--;
}

public int getEmployeeCount () {
vrátit zaměstnancePočet;
}
}

V tomto jednoduchém příkladu je zaměstnanec Počet statická proměnná, která udává aktuální počet zaměstnanců; počet zaměstnanců se zvýší nebo sníží, pouze pokud přidáme nebo odstraníme zaměstnance.

EmpName a empId jsou proměnné instance, protože jsou připojeny k zaměstnaneckým objektům a budou se pro každý objekt přednostně lišit.

Proměnné, které jsou společné pro všechny objekty, tedy musí být statická proměnná, jinak z ní bude proměnná instance.



Odpověď 3:

Proměnná instance je členská proměnná definovaná ve třídě a každá instance (objekt této třídy) má její samostatnou kopii. Toto zůstane v paměti, dokud bude objekt existovat.

Třída Test
{
String abc;
}

Pro přístup k výše uvedenému musíte vytvořit instanci třídy Test

Test t = nový test ();
t.abc = „Ahoj svět“.
Test t1 = nový test ();
t1.abc = "Vítejte"
Test t2 = nový test ();
t2.abc = "Test";

Nyní, když vidíte výše uvedený příklad, máme 3 objekty třídy Test, t, t1 a t2, z nichž každý má vlastní kopii instance proměnné abc a je uložen na různých paměťových místech.

Statická proměnná je naopak spojena s třídou, než s objektem. Mají v paměti jedno pevné umístění a je na něj odkazováno pomocí názvu třídy.

Třída Test
{
String abc;
statický int počet = 0;
}

Nyní, abyste získali přístup k proměnné počtu, nemusíte testovat. Můžete k němu přistupovat jednoduše jako

Test.count = 1;

Obecně se používají statické proměnné, pokud chcete



Odpověď 4:

Tyto typy otázek můžete google pro více podrobností a ukázkový kód

Proměnná instance - Proměnná, která je deklarována uvnitř třídy, ale mimo metodu, se nazývá proměnná instance. Není deklarován jako statický.

Statická proměnná - Proměnná, která je deklarována jako statická, se nazývá statická proměnná. Nemůže to být místní, není to pro žádný částicový objekt, ale pro celou třídu

třída test {
int iv = 10; // proměnná instance
static int sv = 100; // statická proměnná
metoda void () {
int lv = 50; // lokální proměnná
}}

Pro více podrobností se podívejte na Typy proměnných Java