header

2) overerving of inheritance                   terug naar de inleiding
 
De sketch                                       
Hoe komen die kleine ellipsen in het centrum van de grote ellips en de rechthoek?
 
 

RechthoekSub r; 
EllipsSub e;
void setup() { 
 size(640, 360); 
 r = new RechthoekSub(width/3*1, height/2, 40); 
 e = new EllipsSub(width/3*2, height/2, 80, color(175,60,20,100)); 
}
void draw() { 
 background(255); 
 //trillen, stijgen en dalen zijn methodes in de super class 
 e.display(); 
 e.trillen();
 e.stijgen();
 
 r.display();
 r.trillen(); 
 r.dalen(); 
}

De super class of parent ExtraSuper
Er is maar een argument voor de breedte en hoogte van de rechthoek en de ellips
 

 
class ExtraSuper { 
 float x; 
 float y; 
 float bh; 
 float yspeed = 2; 

ExtraSuper(float x_, float y_, float bh_) { 
 x = x_; 
 y = y_; 
 bh = bh_; 
 }
 
void stijgen() { 
 y = y - yspeed; 
 if (y < 0) { 
 y = height; 
 } 
 } 

 
void dalen() { 
 y = y + yspeed; 
 if (y > height) { 
 y = 0; 
 } 
 } 

 
void trillen() { 
 x += random(-1, 1); 
 y += random(-1, 1); 
 } 

//Display in de super class om override te demonsteren 
 void display() { 
 ellipse(x, y, 30, 10); 
 } 
}
De sub class, of child, EllipsSub
 

class EllipsSub extends ExtraSuper { 
  color c; 
  EllipsSub(float x_, float y_, float bh_, color c_) { 
    super(x_, y_, bh_);  
    c = c_;     
  }   
  void display() { 
    ellipseMode(CENTER); 
    fill(c); 
    stroke(0); 
    ellipse(x,y,bh,bh); 
    super.display(); 
  } 
}

De sub class RechthoekSub
 

class RechthoekSub extends ExtraSuper { 
  RechthoekSub(float x_, float y_, float bh_) { 
    super(x_, y_, bh_);    
  } 
  void display() { 
    rectMode(CENTER); 
    fill(175); 
    stroke(0); 
    rect(x, y, bh, bh); 
    super.display(); //Nu voeg ik de display methode van de super class toe 
  } 
}