Variáveis de Referência [DÚVIDA]

Estou estudando para a certificação através do livro da Kathy Sierra e Bert Bates, e me deparei com duas explicações sobre variáveis de referências que não estou conseguindo entender segue abaixo:

“Uma variável de referência pode ser declarada como um tipo de classe ou um tipo de interface. Se a variável for declarada como um tipo de interface, ela pode referenciar qualquer objeto de qualquer classe que implemente a interface.”

“Uma variável de referência pode ser declarada como um tipo de classe ou um tipo de interface. Se a variável for declarada como um tipo de interface, ela pode referenciar qualquer objeto de qualquer classe que implemente a interface!”

Então, essas ai são as explicações que não entendi direito, agradeço se puderem me ajudar !!

Considere o seguinte trecho:

class MinhaInterface {}

class MinhaClasse implements MinhaInterface {}
  
class MinhaOutraClasse implements MinhaInterface {}

O que o trecho que vc citou diz é, simplesmente, que qualquer uma das situações abaixo é possível:

Object a = new MinhaClasse();

MinhaClasse b = new MinhaClasse();

MinhaInterface c = new MinhaClasse();

MinhaInterface d = new MinhaOutraClasse();

A variável c é de um tipo referência (tipo MinhaInterface) e pode conter uma referência para qualquer classe que implemente MinhaInterface.

Não deixe de conferir o link abaixo.

https://docs.oracle.com/javase/specs/jls/se8/html/jls-4.html

2 curtidas

Entenda variável de referência como qualquer variável que não é de tipo primitivo.
Além de classe e interface, uma variável de referência também pode ser do tipo enum.

Uma variável é declarada da seguinte forma:

<modificador de acesso> <tipo de dado> <identificador>;

Onde o <tipo de dado> pode ser um tipo primitivo (byte, boolean, short, char, int, float, long, double), uma classe, uma interface ou um enum.

1 curtida