No exercício 1, onde aparece a classe main Teste, o que mudaria se ao invés de criar uma classe
AreaCalculavel a = new Retangulo(2,3);
eu criasse
Retangulo a = new Retangulo(2,3);
Alguém saberia me responder?
Você está vendo a versão anterior da nova experiência da Alura que estamos preparando para você. Em breve, ela ganha uma identidade visual novinha totalmente pensada em potencializar seus estudos!
No exercício 1, onde aparece a classe main Teste, o que mudaria se ao invés de criar uma classe
AreaCalculavel a = new Retangulo(2,3);
eu criasse
Retangulo a = new Retangulo(2,3);
Alguém saberia me responder?
Você utilizando uma variavel AreaCalculavel seu objeto só poderia utilizar métodos que o tipo dessa variável possuísse, ou seja, o método calcula()
Exemplo:
Digamos que além do método calcula() sua classe Retângulo tivesse um getter, getLado()
Caso você usasse a variável do tipo AreaCalculavel você não poderia chamar o getter, pois esse método não está declarado na interface AreaCalculavel, então variáveis desse tipo não chamam o método. Já se você usar uma variavel do tipo Retângulo, poderia chamar o método sem problema, pois, o método estaria declarado na classe Retângulo e variáveis desse tipo teriam acesso a esse método.
Legal Romário! Obrigado pela explicação!
Amigo só complementando a resposta do amigo ai em cima e respondendo sua pergunta bem diretamente, o que mudaria apenas nesse caso seria a maneira de instânciar (criar) um objeto.
Você lembra de polimorfismo? Polimorfismo é o que permite você instânciar um objeto de várias maneiras, ou seja:
AreaCalculavel a = new Retangulo(2,3);
Nesse caso o polimorfismo diz que você referenciar uma AreaCalculável criando uma nova instância ou objeto do tipo Retangulo, e aqui:
Retangulo a = new Retangulo(2,3);
Você já passa o objeto definitivo na criação.
Blz? Bons estudos.
Ok Felipe! Obrigado pelo esclarecimento!
Marcos, por favor só solucione uma resposta como solução para o tópico não ficar aberto.
Obrigado ;)