Solucionado (ver solução)
Solucionado
(ver solução)
6
respostas

Dúvida no Ex. 2 da Aula 2 - Defina a estrutura de uma classe Java

class Teste {
    int Teste = 305;

    void Teste() {
        System.out.println(Teste);
    }

    public static void main(String[] args) {
        new Teste();
    }
}

Neste exercício, fiquei com uma dúvida: o construtor de uma classe, por padrão não seria "void"? Ou, quando temos um construtor, não devemos utilizá-lo como void?

6 respostas

Olá Paulo tudo bem?

Um construtor apenas é executado quando instanciamos ou criamos um objeto através do new, todas as classes e enums possuem contrutores por padrão, porém estes construtores não possuem nenhum tipo de retorno nem mesmo void, pois não são como os métodos, estes já devem por obrigatoriedade retornar algo mesmo que seja um retorno tipo void "sem retorno".

Neste caso você está criando um novo método com retorno void de nome Teste e não alterando seu construtor padrão da classe Teste,

Espero ter ajudado, bons estudos.

Atenciosamente,

Oi Paulo, tudo bem?

O construtor simplesmente não pode ter definido junto a ele nenhum tipo de retorno, incluindo void.

Da forma que foi apresentado não temos o construtor da classe, mas um método comum chamado Teste().

Isso é feito justamente para confundir o candidato: a convenção indica que nome de método deve começar com letra minúscula, mas nenhum erro ocorre caso a convenção nao seja seguida.

No fim das contas, não foi declarado construtor pra essa classe, e ficamos apenas com o construtor padrão, vazio e sem argumentos.

Dá até pra fazer o seguinte no código:

class Teste {
    int Teste = 305;

    void Teste() {
        System.out.println(Teste);
    }

    public static void main(String[] args) {
        new Teste().Teste(); // chamando método Teste()
    }
}

Para criar o objeto chamamos new Teste() e depois chamamos o método feioso Teste().

Sim, não crie método que iniciem com maíusculas no dia a dia, mesmo que isso funcione. A questao é uma pegadinha pra lhe confundir, algo que a prova pode fazer! :)

Faz sentido?

Eu e o Renan acabamos respondendo ao mesmo tempo. Mas fica aí as duas explicações! :)

Qualquer dúvida você nos avisa.

Abraço.

Pessoal, bom dia. Obrigado pelas explicações.

O que realmente me confundiu foi o fato de termos um método "void" chamado Teste com o mesmo nome da classe. Penso que se retirássemos o "void", seria impresso o valor 305, certo? Outra coisa, como sou iniciante, como faço para compilar os exemplos no vídeo utilizando o PC da minha casa, ou seja, qual programa devo utilizar?

Olá Paulo tudo bem?

Então nestes cursos você irá precisar de um editor de texto simples Notepad no Windows ou gedit no Ubuntu e o JDK (Kit de Desenvolvimento Java) que inclui o compilador "javac" e o JVM (Java Virtual Machine) que é responsável por executar o bytecode gerado como resultado da compilação.

Espero ter ajudado, bons estudos.

Atenciosamente,

solução!

Oi Paulo,

Exatamente. Se tirar o void aí sim teremos um construtor! Aí nesse caso iria imprimir "305". Só lembrar que construtor leva o mesmo nome da classe mas não deve conter nenhum tipo de retorno, nem mesmo void.

--

Como o Renan falou, você precisa do JDK, que contém o javac. Para rodar o javac a partir de qualquer diretório, você deve configurar as variáveis de ambiente caso esteja no Windows. Aqui tem mais detalhes: https://cursos.alura.com.br/course/primeiros-passos-com-java/section/1/exercise/1

O editor de texto utilizado no curso é o sublime text, que pode ser encontrado aqui: https://www.sublimetext.com/.

Um abraço!