Os comandos das linhas 24 e 25 implementam uma chamada a con...

Próximas questões
Com base no mesmo assunto
Q19645 Programação
1 class Bicycle {
2 int cadence = 0;
3 int speed = 0;
4 int gear = 1;
5 void changeCadence(int newValue) {
6 cadence = newValue;
7 }
8 void changeGear(int newValue) {
9 gear = newValue;
10 }
11 void speedUp(int increment) {
12 speed = speed + increment;
13 }
14 void applyBrakes(int decrement) {
15 speed = speed - decrement;
16 }
17 void printStates() {
18 System.out.println("cadence: "+cadence+" speed: "+speed+" gear: "+gear);
19 }
20 }
21 class BicycleDemo {
22 public static void main(String[ ] args) {
23 // Cria dois objetos Bicycle diferentes
24 Bicycle bike1 = new Bicycle( );
25 Bicycle bike2 = new Bicycle( );
26 // Invoca os métodos desses objetos
27 bike1.changeCadence(50);
28 bike1.speedUp(10);
29 bike1.changeGear(2);
30 bike1.printStates();
31
32 bike2.changeCadence(50);
33 bike2.speedUp(10);
34 bike2.changeGear(2);
35 bike2.changeCadence(40);
36 bike2.speedUp(10);
37 bike2.changeGear(3);
38 bike2.printStates( );
39 }
40 }

Considerando o código Java acima, julgue os itens a seguir, acerca da programação orientada a objetos.
Os comandos das linhas 24 e 25 implementam uma chamada a construtores ou instâncias. Uma vez que possuem nome distinto do nome da classe, a assinatura de um construtor não deve possuir nenhum tipo de retorno, nem mesmo void.
Alternativas

Gabarito comentado

Confira o gabarito comentado por um dos nossos professores

Alternativa correta: E - Errado

A questão aborda o conceito de construtores em uma classe Java. Os construtores são métodos especiais que têm por finalidade inicializar objetos recém-criados e têm o mesmo nome da classe a qual pertencem. Um aspecto fundamental dos construtores é que eles não possuem um tipo de retorno, nem mesmo void, e isso inclui que eles não têm um retorno explicitado na sua assinatura.

Observando as linhas 24 e 25, podemos ver a criação de dois objetos da classe Bicycle utilizando new Bicycle(). Esse é um exemplo clássico de chamada ao construtor padrão, que é o construtor fornecido pela linguagem Java quando nenhum construtor é explicitamente definido na classe.

O enunciado da questão faz uma afirmação incorreta ao dizer que os construtores possuem "nome distinto do nome da classe", pois, na verdade, o nome do construtor é sempre o mesmo que o da classe. Além disso, a afirmação de que a assinatura de um construtor não deve possuir nenhum tipo de retorno é parcialmente verdadeira, pois de fato não deve ter um tipo de retorno, mas a frase dá a entender que poderia ter um nome diferente do da classe, o que é incorreto.

Portanto, a alternativa E está correta porque a afirmação de que os construtores possuem um nome distinto do nome da classe está errada, e porque a assinatura de um construtor realmente não tem nenhum tipo de retorno.

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

Construtores são métodos especiais chamados pelo sistema no momento da criação de um objeto. Eles não possuem valor de retorno, porque você não pode chamar um construtor para um objeto, você só usa o construtor no momento da inicialização do objeto. Construtores representam uma oportunidade de inicializar seus dados de forma organizada, imagine se você esquece de inicializar corretamente ou o faz duas vezes, etc.Um construtor tem sempre o mesmo nome da classe a qual pertence. Para a classe String, pré-definida na linguagem o construtor tem a forma String("Constante do tipo String"); com o argumento entre aspas que é especificado pelo programador. Ele seria chamado automaticamente no momento da criação, declaração de uma String, sem necessidade de uso do nome do construtor como método, apenas dos argumentosFonte: http://javafree.uol.com.br/topic-4424-Como-funciona-o-metodo-construtor.html
Um construtor tem que obrigatoriamente o mesmo nome da classe.

Clique para visualizar este comentário

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