A különbség a kulcsszavak és szuper a java

A különbség a kulcsszavak és szuper Java

és ez a szuper - ezek két speciális kulcsszavak Java, amely képviseli, illetve a jelenlegi esetben az osztály és mikrotörzs. Java-programozók gyakran összekeverik a szavakat, és megtalálják a gyenge a figyelmet azok sajátos tulajdonságait, amelyek gyakran megkérdezte egy interjúban Java mag. Például egy pár kérdést, amit azonnal eszünkbe jut erről, és szuper. Lehetséges, hogy rendeljen egy másik értéket a megfelelő kulcsszó Java? és mi a különbség a kulcsszavak és szuper Java. Te nem tudod? Nos, itt nem adja meg a választ - megtalálja a végén. Tehát, mint mondtam az elején, a fő különbség a és szuper Java, hogy ez képviseli a jelenlegi esetben az osztály, míg a szuper - az aktuális példányt a szülő osztályban. Íme egy példa a használatára változók, és ez a szuper - akkor valószínűleg már láttunk példát a tervezők hívja egy másik, úgynevezett kivitelező felhívja a láncot, lehetséges használata révén kulcsszavak és szuper. Az osztályon belül, hogy hívja a kivitelező paraméterek nélkül használja ezt a (), míg a super () hívtuk a kivitelező paraméterek nélkül, vagy ahogy nevezik, akkor az alapértelmezett konstruktor a szülő osztályban. Mellesleg ezen a módon képes indukálni nem csak konstruktor paraméterek nélkül bármely és minden más kivitelező, így ez a megfelelő paramétereket. Hamarosan látni fogjuk, egy példát a használatára és szuper. Több és szuper Java használják utal egy példányát változót és a szülő. Tény, hogy lehet elérni anélkül, hogy a prefixumok szuper és ez. de csak akkor, ha az aktuális blokk olyan változókat, nem fedik egymást más változókkal, azaz, ha nincs lokális változó, az azonos nevű, egyébként használja nevek Prefixekkel kell arról, de ez nem számít, mert a Ily módon ők még olvasható. Ennek klasszikus példája ennek a megközelítésnek, hogy ezt a belső kivitelező, hogy vesz egy paraméter az azonos nevű, mint a például a változó. Tovább a cikket, megtudhatja, mi mást között különbségek vannak a szuper és ez. és nézd meg néhány példát.

Mielőtt rátérnénk a különbség a kulcsszót, és szuper. nézzük meg néhány, a hasonlóságok:

1) És ez. és szuper - ez nem statikus változók nem használhatók, illetve a statikus összefüggésben, ami azt jelenti, hogy nem lehet használni a módszert fő. Ez azt eredményezi, hogy egy hiba fordításkor „a nem-statikus változó ez nem lehet hivatkozni a statikus környezetben.” Ugyanez történik, ha a fő módszer a kulcsszót szuper.

2) És ez. és fel lehet használni a szuper kivitelező hívni más konstruktőrök lánc, pl. ezt () és a super () konstruktor hívják argumentumok nélkül örökség és a szülő osztály, ill.

Az alábbi példában, akkor először át a konstruktor hívást B osztályú argumentum nélkül a kivitelező az azonos osztályba tartozó B, figyelembe egyetlen paraméter String, ahonnan viszont keresztül super ( „”) nevezzük az egyik érv kivitelező a mikrotörzs.


3) Belső és szuper tervező kell állni minden más kifejezések, az elején, különben a fordító kiad egy hibaüzenetet. Ebből következik, hogy egy kivitelező nem lehet egyszerre, és ez (), és szuper ().

A különbségek és szuper
Most már tudjuk, hogyan kell használni a kulcsszavakat és szuper ezt, és megérteni, mit kell. De van egy másik lehetőség e kulcsszavak, amit nem mondtam - egy belső osztály, ahol a segítség nagyon kényelmes, hogy olvassa el a külső osztály segítségével Outer.this jelölést a jelenlegi fokon Outer.super - szüleinek. Ne felejtsük el, hogy külső helyett neve helyett a külső osztályban. És most nézzük röviden felsorolni a fő különbség a kulcsszavak és szuper

1) ez a változó utal, hogy a jelenlegi esetben az osztály, amelyben használják, míg a szuper -, hogy az aktuális példányt a szülő osztály.

2) Mindegyik tervező hiányában explicit hívások más konstruktőrök hallgatólagosan hívásokat a super () konstruktor paraméterek nélkül, a szülő osztály, ebben az esetben mindig a lehetőséget, hogy kifejezetten meghívja minden kivitelező vagy ezen () vagy super ().

Talán ez minden, amit mondani lehet, mi a különbség a kulcsszavak és szuper Java és hogyan használják a programokat. Mint láttuk, a fő cél -, hogy hatására az egyik kivitelező a másiktól, és olvassa el a példány deklarált változók az aktuális osztály és a szülő osztályban. Ne felejtsük el, hogy ez nem normális változók, és most - a válasz a kérdésemre megkérdeztem az első bekezdésben. Nem, ez a változó nem lehet rendelni egy új értéket, mert nyilvánították végleges. Meg lehet próbálni csinálni az IDE - kap egy fordítási hiba „nem rendelni egy új érték ez - nyilvánítsa a végső».

1) ez a változó utal, hogy a jelenlegi esetben az osztály, amelyben használják, míg a szuper -, hogy az aktuális példányt a szülő osztály. Szeretném tisztázni a szuper. Azt mondja, hogy arra utal, hogy egy példányát a szülő osztályban. azaz, ha veszünk egy példát a szövegből. Készítsen egy projekt:

Most, ha a B osztályú kódot, találkozunk utalásokat szuper (nem a kivitelező, de valahol más módszerek például) - utal objA történik?
és ha lesz:

mi lesz most hivatkozhat szuper?

köszönöm a választ, akkor is, ha úgy tűnik, nagyon zöldfülű)

Valami nem láttam ezt a kérdést korábban, csak most vette észre :-)
Ebben az esetben a kulcsszó szuper, használt B osztályú kód utal a tárgy a szülő osztály, amely része az objektum B. Elvégre, ha létrehoz egy objektumot minden osztály, minden osztály - olyan tárgyak elsősorban a szülő osztály, és csak a végén - az objektum az osztály.
Ie Az osztály objektum valójában a 2, hogy pontos legyek - 3 tárgyak: objektumosztály objektumot, az objektum osztály és az objektum az osztály B.
A példád, szuper nem hivatkozhat semmilyen tárgyat objA, bármilyen tárgy objA1.

Jó napot! Nem egészen értem a kifejezést: „3) ... Ebből következik, hogy a kivitelező nem lehet egyidejűleg és ezt (), és szuper ()» Mi a helyzet a feladat level15.lesson02.task04, amelyben van egy konstruktor (például kód) Köszönet előre . -)
public static class AgathaChristieBook kiterjed könyv
public String név;
nyilvános AgathaChristieBook (String name)
super ( «Agatha Christie»);
this.name = név;
>

Itt ezt használja a területen, és beszélünk egy másik hívást this () kivitelező, azaz Így lehetetlen:

Kapcsolódó cikkek