Kezdőoldal » Számítástechnika » Programozás » 1. Javaban ez mért konstruktor...

1. Javaban ez mért konstruktor? 2. Mire jó a this, this (), mikor használjuk őket?

Figyelt kérdés

1.

...

public class Rectangle(){

...

public Rectangle(){ // Ez a három sor

a=0; b=0; //

} //

public Rectangle(double a, double b){

this.a=a; this.b=b

}

...

}

// Konstruktort nemde a new operátorral adunk meg?

--------------------------

2. Erre nincs konkrét példám, hacsak nem a fenti, de elmagyaráznád mire jó, mikor kell?



2012. máj. 26. 17:56
 1/5 anonim ***** válasza:

A konstruktor az a fugveny melynek nincs visszateresi tipusa es neve megegyezik az oszaly nevevel.Egy oszalynak lehet tobb konstruktora is ha kulomboznek a parameterek.

Rectangle my_obj=new Rectangle(); //ez hivja elo a konstruktort


this az meg az osztalyt jellenti amelybe talalhato,

szoval this.a az Rectangle osztaly a valtozojat jellenti,

a this() az meg a konstruktort.

Ugy is lehet ra gondolni mintha a this az osztaly nevet helyetesitene pl Rectangle.a , Rectangle()

2012. máj. 26. 19:51
Hasznos számodra ez a válasz?
 2/5 A kérdező kommentje:
akkor minek használ a java konstruktorokat ha egyszer a függvények többet tudnak, hiszen van plusszba visszatérési értékük és ugy nevezem el őket ahogy akarom?
2012. máj. 26. 20:07
 3/5 anonim ***** válasza:
Azért mert a konstruktornak az a feladata, hogy a létrehozott objektum működését előkészítse, hiszen amint példányosítod az adott osztályt a konstruktora automatikusan meghívódik.
2012. máj. 26. 20:31
Hasznos számodra ez a válasz?
 4/5 Srapnel ***** válasza:

Minden OOP-s nyelvben vannak objektumok, amik a lényegét adják az egésznek. Minden objektumnak lehetnek (vannak) metódusai, amiket meghívhatsz. Java-ban a metódusok definíciója az objektumok osztálydefiníciójában történik, mert a Java osztályalapú OOP-t valósít meg (szemben pl. a prototípus alapúakkal). Az egy értelmes gondolat, hogy minden objektum példányosításakor lehessen tetszőleges műveletet végezni, úgymond előkészíteni az objektumot a használatra. Műveletek egy OOP-s nyelvben metódusok testében vannak csak, tehát kell egy metódus, ami akkor fut le, amikor az objektum létrejön. Az ilyen metódusok a konstruktorok. Hogy a konstruktorokat definiálni lehessen (szintaktikailag) a "Java azt választotta", hogy a definíció az osztályban úgy történjen, hogy a metódusnak nincs visszatérési értéke és a neve az osztály nevével egyezik meg.


A Java lehetővé teszi azt, hogy egy osztályban több konstruktort is definiálhass, különböző paraméterekkel. Így több módja lehet annak, hogy egy objektum használatra késszé váljon.


Java-ban nem célszerű egy sima metódust egy konstruktorból hívni, hiszen az objektum lehet, még nincs abban az állapotban, hogy ezt megtedd. Az viszont biztonságos dolog, hogy egy másik konstruktort meghívj. Szintaktikailag lehetne ez épp Osztálynév(...) formában is megtehető, de a tervezők azt választották, hogy this(...). Vagyis egy "this(...)" hívás semmi más, mint egy konstruktorból ugyanazon objektum másik konstruktorának meghívása. A "super(...)" pedig az objektum ősosztályának metódusának meghívása az objektumra.


Vagyis, ha van egy


public Rectangle() { ... }


metódusod, ami "nagyon sok mindent csinál", amit nem akarsz megismételni egy


public Rectangle(double a, double b) {...}


-ben, akkor az előbbit az utóbbiban meghívhatod "this()" formában.

2012. máj. 29. 16:47
Hasznos számodra ez a válasz?
 5/5 Srapnel ***** válasza:
Ja és az utóbbiak konstruktorokra vonatkozik, csak én "metódusnak" hívtam őket.
2012. máj. 29. 16:48
Hasznos számodra ez a válasz?

Kapcsolódó kérdések:




Minden jog fenntartva © 2024, www.gyakorikerdesek.hu
GYIK | Szabályzat | Jogi nyilatkozat | Adatvédelem | Cookie beállítások | WebMinute Kft. | Facebook | Kapcsolat: info(kukac)gyakorikerdesek.hu

A weboldalon megjelenő anyagok nem minősülnek szerkesztői tartalomnak, előzetes ellenőrzésen nem esnek át, az üzemeltető véleményét nem tükrözik.
Ha kifogással szeretne élni valamely tartalommal kapcsolatban, kérjük jelezze e-mailes elérhetőségünkön!