Back Up Next

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);
    }
}
Back Up Next