Inheritance

Learn about inheritance and its related concepts.

We’ve discussed three types of relationships between objects: association, composition, and aggregation. However, we have not fully specified our chess set, and these tools don’t seem to give us all the power we need. We discussed the possibility that a player might be a human or it might be a piece of software featuring artificial intelligence. It doesn’t seem right to say that a player is associated with a human, or that the artificial intelligence implementation is part of the player object. What we really need is the ability to say that Deep Blue is a player, or that Gary Kasparov is a player.

The is a relationship is formed by inheritance. Inheritance is the most famous, well-known, and overused relationship in object-oriented programming. Inheritance is sort of like a family tree where one class can inherit attributes and methods from another class.

Example

Let’s discuss the concept of inheritance through an example. There are 32 chess pieces in our chess set, but there are only six different types of pieces (pawns, rooks, bishops, knights, king, and queen), each of which behaves differently when it is moved. All of these classes of piece have properties, such as color and the chess set they are part of, but they also have unique shapes when drawn on the chess board, and make different moves. Let’s see how the six types of pieces can inherit from a Piece class:

Press + to interact
Inheritance relationship between Piece class and different types of chess pieces
Inheritance relationship between Piece class and different types of chess pieces

The hollow arrows indicate that the individual classes of pieces inherit from the Piece class. All the child classes automatically have a chess_set and color attribute inherited from the base class. Each piece provides a different shape property (to be drawn on the screen when rendering the board), and a different move() method to move the piece to a new position on the board at each ...