Source: http://www.cs.sfu.ca/CourseCentral/212/tront/lectureNotes/212s09.multInherit.03-1.pdf