1. Javaban ez mért konstruktor? 2. Mire jó a this, this (), mikor használjuk őket?
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?
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()
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.
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
Ha kifogással szeretne élni valamely tartalommal kapcsolatban, kérjük jelezze e-mailes elérhetőségünkön!