Dúvida quanto ao alocamento do Java

Suponhamos que eu tenha um objeto Player com N variáveis e métodos. Este objeto player implementa a interface Nameable que tem somente dois métodos (getName e setName). Caso em uma estrutura de código, eu defina:

Nameable nameable = World.getPlayer(“Murilo”);

O espaço alocado pelo objeto “nameable” seria menor do que se eu escrevesse a mesma estrutura da seguinte forma?

Player nameable = World.getPlayer(“Murilo”);

Agradeço a atenção.

Nao, o espaço alocado seria o mesmo.

Mas qual o motivo da pergunta? Geralmente você nao deveria se preocupar tanto com isso.

O espaço alocado sempre será o espaço necessário para a instância da classe.
Independente se a variável declarada é mais abstrata, o objeto sempre vai ocupar a memória necessária para as instâncias da classe na qual foi realizar a instrução new ConstrutorDaClasse().

Então quando você faz Nameable nameable = World.getPlayer(“Murilo”); o espaço alocado será o espaço necessário para alocar o objeto retornado pelo método getPlayer().

Era apenas uma curiosidade, não se preocupe

Muito obrigado!

Isso é o que permite que seja feito o cast de uma instância de objeto de uma classe/interface mais abstrata para uma instância de objeto de uma classe mais especializada.

Object obj = new String("Aphonso");
String nome = (String) obj;

Se isso não ocorresse, não seria possível obter os atributos que não fazem parte da classe/interface mais abstrata.

1 curtida