
Konstruktorji
in destruktorji
 |
konstruktor
objekta je metoda, ki se kliče, ko objekt skreiramo (z new); |
 |
konstruktor
ima
enako ime, kot je ime razreda, lahko ima tudi argumente; |
 |
destruktor
se kliče, ko se objekt uniči; |
 |
destruktor
ima
ime finalize( ); |
class Enemy
{
int posX,posY;
Enemy() { // Konstruktor razreda Enemy
posX=0; posY=0;
System.out.println("Konstruktor Enemy");
}
void move(int x, int y) {
posX += x;
posY += y;
}
protected void finalize() { // Destruktor razreda Enemy
System.out.println("Destruktor Enemy");
}
}
class Alien extends Enemy {
int color, shape;
Alien(int color, int shape) { // Konstruktor razreda Alien
color=1; shape=12;
System.out.println("Konstruktor Alien");
}
void morph() {
shape=shape%7*3;
}
}
class Game
{
public static void main(String argv[]) {
Enemy x = new Enemy();
Alien y = new Alien();
x.posX=3; x.posY=10;
y.posX=-4; y.posY=2; y.shape=3;
y.move(3,1);
y.morph();
System.runFinalizersOnExit(true); // mora biti, da se
// klice destruktor
}
}

Konstruktorji
in dedovanje
 |
kot
kaže primer, se pri klicu konstruktorjev vedno najprej pokliče konstruktor
razreda "očeta", torej razreda, iz katerega je trenutni razred izpeljan. |
 |
privzeto
se pokliče konstruktor brez arumentov. Če želimo, da se kliče konstruktor
z argumenti, moramo uporabiti besedo super( ...
) |
class Enemy
{
int posX,posY;
Enemy() {
posX=0; posY=0;
System.out.println("Konstruktor Enemy");
}
Enemy(int x, int y) {
posX=x; posY=y;
System.out.println("Konstruktor Enemy z argumenti");
}
protected void finalize() {
System.out.println("Destruktor Enemy");
}
}
class Alien extends Enemy {
int color, shape;
Alien(int color, int shape) {
super(2,3); // kličemo Enemy konstruktor
color=1; shape=12;
System.out.println("Konstruktor Alien");
}
void morph() {
shape=shape%7*3;
}
}
class Game
{
public static void main(String argv[]) {
Enemy x = new Enemy();
Alien y = new Alien(2,5);
x.posX=3; x.posY=10;
y.posX=-4; y.posY=2; y.shape=3;
y.morph();
System.runFinalizersOnExit(true);
}
}
