Source: https://monge.univ-mlv.fr/ens/Master/M1/2020-2021/StageJava/cours/poo1-object-20161004.pdf