Source: https://www.cs.umd.edu/class/summer2012/cmsc131/inheritance.pdf