A criação de um objeto da interface Coins ( ) pode ser corre...

Próximas questões
Com base no mesmo assunto
Q19655 Programação
Public interface Coins {
int
PENNY = 1,
NICKEL = 5,
DIME = 10,
QUARTER = 25,
DOLAR = 100;
}
class SodaMachine implements Coins {
int price = 3*QUARTER;
// ...
}

Considerando o código Java acima, que implementa uma
interface sem modos definidos, julgue os itens seguintes.
A criação de um objeto da interface Coins ( ) pode ser corretamente realizada por meio do construtor SodaMachine soda = new Coins( );.
Alternativas

Gabarito comentado

Confira o gabarito comentado por um dos nossos professores

Gabarito: E - errado

Para entender a correção desta questão, precisamos primeiramente compreender o que são interfaces em Java e como elas funcionam. Uma interface é uma estrutura que pode conter constantes e métodos abstratos, mas não pode ser instanciada diretamente. Ou seja, você não pode criar um objeto de uma interface usando o operador new como faria com uma classe. Interfaces são usadas para definir um contrato que outras classes podem implementar, garantindo que essas classes tenham determinados métodos.

No caso do código apresentado, Coins é uma interface que define constantes para os diferentes tipos de moedas. A classe SodaMachine implementa essa interface, significando que ela pode usar as constantes definidas em Coins, como faz ao definir o preço de um refrigerante (price = 3*QUARTER).

A afirmação de que você pode criar um objeto da interface Coins diretamente com new Coins() é incorreta. Em Java, você somente pode criar instâncias de classes concretas ou de classes anônimas que implementem a interface. Por isso, a maneira correta de criar um objeto que tenha relação com a interface Coins seria instanciar um objeto da classe SodaMachine, que implementa Coins, usando o seu construtor, assim:

SodaMachine soda = new SodaMachine();

Espero que a explicação tenha ajudado a esclarecer a questão! Lembre-se sempre de que interfaces em Java são usadas para definir um conjunto de métodos que as classes implementadoras devem fornecer, e que interfaces não podem ser diretamente instanciadas.

Clique para visualizar este gabarito

Visualize o gabarito desta questão clicando no botão abaixo

Comentários

Veja os comentários dos nossos alunos

Interfaces não podem ser instanciadas...

Por outro lado poderiamos ter:

Coins c = new SodaMachine ( );

Como temos em Java

List l = new ArrayList ();
Interfaces são classes sem construtores!

Clique para visualizar este comentário

Visualize os comentários desta questão clicando no botão abaixo