# Inheritance

Inheritance

A class can be defined using another class as a foundation. In object-oriented programming terminology, one class can inherit fi elds and methods from another. An object that inherits from another is called a subclass, and the object it inherits from is called a superclass. A subclass extends the superclass.

```
SpinSpots spots;
SpinArm arm;

void setup() {
size(640, 360);
arm = new SpinArm(width/2, height/2, 0.01);
spots = new SpinSpots(width/2, height/2, -0.02, 90.0);
}

void draw() {
background(204);
arm.update();
arm.display();
spots.update();
spots.display();
}

class Spin {
float x, y, speed;
float angle = 0.0;
Spin(float xpos, float ypos, float s) {
x = xpos;
y = ypos;
speed = s;
}
void update() {
angle += speed;
}
}

class SpinArm extends Spin {
SpinArm(float x, float y, float s) {
super(x, y, s);
}
void display() {
strokeWeight(1);
stroke(0);
pushMatrix();
translate(x, y);
angle += speed;
rotate(angle);
line(0, 0, 165, 0);
popMatrix();
}
}

class SpinSpots extends Spin {
float dim;
SpinSpots(float x, float y, float s, float d) {
super(x, y, s);
dim = d;
}
void display() {
noStroke();
pushMatrix();
translate(x, y);
angle += speed;
rotate(angle);
ellipse(-dim/2, 0, dim, dim);
ellipse(dim/2, 0, dim, dim);
popMatrix();
}
}
```

## Functions Used

ellipse()

Draws an ellipse (oval) to the screen

popMatrix()

Pops the current transformation matrix off the matrix stack

rotate()

Rotates the amount specified by the angle parameter

super

Keyword used to reference the superclass of a subclass

size()

Defines the dimension of the display window width and height in units of pixels

line()

Draws a line (a direct path between two points) to the screen

stroke()

Sets the color used to draw lines and borders around shapes

setup()

The setup() function is run once, when the program starts

strokeWeight()

Sets the width of the stroke used for lines, points, and the border around shapes

translate()

Specifies an amount to displace objects within the display window

draw()

Called directly after setup(), the draw() function continuously executes the lines of code contained inside its block until the program is stopped or noLoop() is called

background()

The background() function sets the color used for the background of the Processing window