Java suporta polimorfismo, a propriedade de um objeto assumir diferentes formas. Mais precisamente, um objeto Java pode ser acessado usando a referência com o mesmo tipo como um objeto, uma referência que é a superclasse do objeto, ou uma referência que define uma interface que o objeto implementa, tanto diretamente