Java, miert irodik ki a printl ha csak letrehozzuk az objektumot?
Forras:
Inheritance
Constructors are not member methods, and so are not inherited by subclasses.
However, the constructor of the superclass is called when the subclass is instantiated.
Example:
class A {
public A() {
System.out.println("New A");
}
}
class B extends A {
public B() {
System.out.println("New B");
}
}
class Program {
public static void main(String[ ] args) {
B obj = new B();
}
}
/*Outputs
"New A"
"New B"
*/
- kerdesem miert irodik ki a New A es B ?
- valamint ezt hogy lehet meghivni megegyszer az obj -t?
pl.
obj();
vagz csak siman obj;
de ezek nem jok,hibat dob
Röviden és tömören azért írja ki, hogy New A, mert először mindig meghívódik a superclass konstruktora.
Mivel az obj csak egy referencia (mutató), ráállíthatod egy másik objektumra. És újra meghívod a konstruktort.
obj = new B();
Ezt kicsit kifejtve: Az obj változód referenciaváltozó, ő csak a B objektum címét tárolja, de nem az "értékét", nem magát az objektumot. Ezért amikor ezt írod:
B obj; // új referencia, ami még nem mutat sehova. (null)
obj = new B(); // new B() hatására egy új B példány keletkezik és az obj referencia mutat rá.
Majd újra:
obj = new B(); // szintén egy teljesen új objektum jön létre, és az obj mutat rá. Az első példány tehát csak lebeg magába, őt már nem lehet elérni. A garbage collector majd ha jónak látja megsemmisíti.
Kapcsolódó kérdések:
Minden jog fenntartva © 2025, 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!