This()

Vývojová prostředí, aplikace, skripty, http://www... síťové programy, internet, sdílení...
Odpovědět
wokena
Nováček
Nováček
Registrován: 18. pro 2007

This()

Příspěvek od wokena »

Ahoj,poraďte mi prosím,jak se používá this() na volání konstruktorů,zkoušel jsem to,ale netBeans mi vyhazuje chybu.
Teuzz
Středně pokročilý
Středně pokročilý
Uživatelský avatar
Registrován: 25. zář 2004
Bydliště: Liberec, Praha
Kontaktovat uživatele:

Re: This()

Příspěvek od Teuzz »

pokud v tom píšeš Javu, snad by měla být odpověď nijak.

Alespoň v C# a C++ je konstruktor věc, která "se volá" při vytvoření instance třídy (až dojdeš k dědičnosti a virtuálním metodám, zjistíš, že lžu) tzn. ve chvíli, kdy někde voláš new mojeTrida() a volá se zvenčí.
Burn in hell.
wokena
Nováček
Nováček
Registrován: 18. pro 2007

Re: This()

Příspěvek od wokena »

Jo,v C taky dělám,ale konstruktor v java je nejenom metoda,ktera se vola pri vytvoreni instance,ale muzes ji pouzivat i jako normalni metodu.
k23
Začátečník
Začátečník
Registrován: 10. lis 2003
Bydliště: PHA

Re: This()

Příspěvek od k23 »

wokena píše:Ahoj,poraďte mi prosím,jak se používá this() na volání konstruktorů,zkoušel jsem to,ale netBeans mi vyhazuje chybu.
Co si představuješ pod this() ? Můžeš to rozvést? Jak bylo řečeno v jiném threadu, this je klíčové slovo a ne metoda.

Navíc, měl bys pouvažovat nad "NetBeans mi vyhazuje chybu"... ono se totiž dost často hodí vědět, jakou chybu.
wokena
Nováček
Nováček
Registrován: 18. pro 2007

Re: This()

Příspěvek od wokena »

Jo,this není metoda,ale používá se taky na volání konstruktorů (konstruktor je metoda,která se dá použít jednak při vytváření instancí,a jednak ji můžeš využít jako normální metodu).A právě mi NetBeans háže chybu (podtrhnutý this),když se pokouším pomocí this volat konstruktory.Syntaxe je:

Kód: Vybrat vše

...
public void metoda() {
this(parametry_konstruktoru);
}
...
Tak nevím,proč mi to NetBeans označuje za chybu,když jsem to opsal přesně z knížky. :x :x :?:

P.S.:Jestli chcete screenshoot tak ho uděám.
Reba
Začátečník
Začátečník
Uživatelský avatar
Registrován: 15. led 2006
Bydliště: Liberec
Kontaktovat uživatele:

Re: This()

Příspěvek od Reba »

A nepíše ti to chybu:
"call to this must be first statement in constructor"?
Gigabyte EX38-DS4 X38, Intel C2D E8400, Corsair 2x1024 MB DDR II 1066 MHz, GigaByte ATI HD3870 512 MB, WD 640 GB, Corsair HX620 620 W, Thermaltake Mambo VC2000, WinVista Home Premium CZ SP1
wokena
Nováček
Nováček
Registrován: 18. pro 2007

Re: This()

Příspěvek od wokena »

Jo,píše-co to znamená ?
Reba
Začátečník
Začátečník
Uživatelský avatar
Registrován: 15. led 2006
Bydliště: Liberec
Kontaktovat uživatele:

Re: This()

Příspěvek od Reba »

No přijde mi to divný, podle mě by to this() mělo bejt v konstruktoru na prvnim místě, jak je tam psáno a ne v metodě.
Gigabyte EX38-DS4 X38, Intel C2D E8400, Corsair 2x1024 MB DDR II 1066 MHz, GigaByte ATI HD3870 512 MB, WD 640 GB, Corsair HX620 620 W, Thermaltake Mambo VC2000, WinVista Home Premium CZ SP1
wokena
Nováček
Nováček
Registrován: 18. pro 2007

Re: This()

Příspěvek od wokena »

No,co se s tím má dělat?
Reba
Začátečník
Začátečník
Uživatelský avatar
Registrován: 15. led 2006
Bydliště: Liberec
Kontaktovat uživatele:

Re: This()

Příspěvek od Reba »

No to záleží, co ty chceš udělat.. this() se asi dá zavolat pouze v konstruktoru na prvním místě, což je něco jako super() při dědičnosti, když voláme konstruktor předka. Potřebuješ s tim něco konkrétního?
Gigabyte EX38-DS4 X38, Intel C2D E8400, Corsair 2x1024 MB DDR II 1066 MHz, GigaByte ATI HD3870 512 MB, WD 640 GB, Corsair HX620 620 W, Thermaltake Mambo VC2000, WinVista Home Premium CZ SP1
wokena
Nováček
Nováček
Registrován: 18. pro 2007

Re: This()

Příspěvek od wokena »

Takže this je opak super(u dědičnosti),a naopak,že?
Trek
Začátečník
Začátečník
Uživatelský avatar
Registrován: 16. kvě 2008

Re: This()

Příspěvek od Trek »

super vola metodu predka

this vola metodu aktualniho objektu

pokud z konstruktoru volas jinej konstruktor musi to this bejt jako
prvni z logickych duvodu

co je na tom nejasnyho

v C++ je to osetreny, ze to pises hned za zavorkama a dvouteckou, takze tam tohle lamereni odpada
Odpovědět

Zpět na „Programování a web“