This – Java – Fórum – Programujte.com
 x   TIP: Přetáhni ikonu na hlavní panel pro připnutí webu

This – Java – Fórum – Programujte.comThis – Java – Fórum – Programujte.com

 

wokena0
Stálý člen
29. 11. 2008   #1
-
0
-

Dobrý den,
chtěl by sem se zeptat,k čemu slouží klíčové slovo "this".Hledal jsem na googlu,pátral jsem v knížkách,všude je něco napsáno,ale nikde to není česky,ani to není (teda aspoň pro mě) dobře vysvětleno.Prosil bych o srozumitelné
vysvětlení s příkladem
(s nějakým jednoduchým a pochopitelným).Děkuji z Vaše odpovědi...

Nahlásit jako SPAM
IP: 78.102.248.–
md5-generator.wokena.com | blog.wokena.com | wokena.com
Quiark0
Věrný člen
29. 11. 2008   #2
-
0
-

Hm, nojo, ono se to popisuje slovně špatně, protože je to tak jednoduché... this je aktuální objekt. Příklad bude lepší:



class X {
private int cislo;
public void metoda() {
cislo = 2;
this.cislo = 2; // tento radek ma uplne stejny vyznam jako predchozi
}
};


Neboli když máš nějakou instanci třídy X a zavoláš metodu 'metoda', potom 'this' je právě ta instance třídy X. Proto jsou ty dva řádky ekvivalentní, protože když před proměnnou neuvedeš nic, bere se aktuální instance, což je to samé jako this.

Nahlásit jako SPAM
IP: 147.251.68.–
Nosko0
Stálý člen
29. 11. 2008   #3
-
0
-

Kľúčové slovo this slúži sa na odvolávanie sa na objekt a jeho vlastností.
+ this ako funkcia slpži na zavolanie "vhodného "konštruktora -> zavolá taký konštruktor, ktorému odpovedajú jeho parametre.
Napr.



public class Auto {
private string farba;
private string znacka;

public Auto(string farba, string znacka){
this.farba=farba;
this.znacka=znacka;
}

public Auto(){
this("neznama","neznama");
}

Auto nastavFarbu(string color){
this.farba=color;
return this;
}

Auto nastavZnacku(string zn){
this.znacka=zn;
return this;
}
}


//Edit: neskoro :)

Nahlásit jako SPAM
IP: 84.16.37.–
Quiark0
Věrný člen
29. 11. 2008   #4
-
0
-

No a pak ještě se to nějak používá když má člověk vnořené třídy. To je specifické pro javu.

Nahlásit jako SPAM
IP: 147.251.68.–
wokena0
Stálý člen
30. 11. 2008   #5
-
0
-

No počkat,takže to dělá ze zamčených (private) "objektů" "neuzamčené",a zároveň jim dává hodnotu?Takže, jestli jsem tomu správně rozuměl,tak tohle plati:
Máme dvě třídy,třeba A & B.V první máme deklarovanou private int i=1;.Druhou prázdnou (s metodou main,a aby jsme se nepletly mají stejný název balíčku).Ve trídě B zavloláme (ve třídě main):

System.out.println(this.i);
.A to by mělo zavolat dat. typ i z třídy A.Nakonec by to mělo vypsat toto: 1

Byl bych rád,kdyby jste mě opravily.

Nahlásit jako SPAM
IP: 78.102.248.–
md5-generator.wokena.com | blog.wokena.com | wokena.com
Quiark0
Věrný člen
30. 11. 2008   #6
-
0
-

Nevím, jestli tady jsou nějaké holky, které by tě opravily, ale pokud ti to bude stačit od nás...

Zbytečně to komplikuješ. This nic neodemyká, nezpřístupňuje. This je prostě aktuální instance třídy (té třídy, do které patří metoda, která se zrovna vykonává). Je to vlastně zájméno "já" - this.x = 4; znamená "moje x nastav na 4".

Například když budeš mít třídu GUI pro nějaké grafické rozhraní tvého programu, kde bude textové pole a tlačítko pro započetí práce a potom třídu Worker, která provádí potřebnou práci, mohlo by to vypadat třeba takto. Worker chce říct tomu GUI, že je hotovo a proto potřebuje mít na instanci třídy GUI odkaz. A ten získá tak, že mu ten odkaz na sebe instance třídy GUI dá před započetím práce. A kde třída GUI vezme odkaz na sebe? No přece pomocí klíčového slova this.



class GUI {
public void done() {
message.setText("Prace je hotova!");
}

public void startBtnClicked() {
Worker w = new Worker();
w.setGui(this);
w.doWork();
}

}

class Worker {
private GUI owner;

void setGui(GUI x) {
owner = x;
}

void doWork() {
// delame moc prace
// na konci rekneme majiteli, ze je hotovo
owner.done();
}
}


Nahlásit jako SPAM
IP: 193.86.140.–
Zjistit počet nových příspěvků

Přidej příspěvek

Toto téma je starší jak čtvrt roku – přidej svůj příspěvek jen tehdy, máš-li k tématu opravdu co říct!

Ano, opravdu chci reagovat → zobrazí formulář pro přidání příspěvku

×Vložení zdrojáku

×Vložení obrázku

Vložit URL obrázku Vybrat obrázek na disku
Vlož URL adresu obrázku:
Klikni a vyber obrázek z počítače:

×Vložení videa

Aktuálně jsou podporována videa ze serverů YouTube, Vimeo a Dailymotion.
×
 
Podporujeme Gravatara.
Zadej URL adresu Avatara (40 x 40 px) nebo emailovou adresu pro použití Gravatara.
Email nikam neukládáme, po získání Gravatara je zahozen.
-
Pravidla pro psaní příspěvků, používej diakritiku. ENTER pro nový odstavec, SHIFT + ENTER pro nový řádek.
Sledovat nové příspěvky (pouze pro přihlášené)
Sleduj vlákno a v případě přidání nového příspěvku o tom budeš vědět mezi prvními.
Reaguješ na příspěvek:

Uživatelé prohlížející si toto vlákno

Uživatelé on-line: 0 registrovaných, 15 hostů

Moderátoři diskuze

 

Hostujeme u Českého hostingu       ISSN 1801-1586       ⇡ Nahoru Webtea.cz logo © 20032024 Programujte.com
Zasadilo a pěstuje Webtea.cz, šéfredaktor Lukáš Churý