1.3.3.1

Métodos não são construtores quando possuem tipo de retorno

Um método que começa com letra maiúscula e possui o mesmo nome da classe não é um construtor se declarar um tipo de retorno. A presença de um tipo de retorno faz com que o compilador trate esse elemento como um método comum, independentemente do nome utilizado.

Exemplo conceitual

public class User {

    public void User() {
    }
}

Explicação linha a linha

public class User {

Declara a classe User.

public void User() {

Declara um método comum chamado User. Apesar de o nome coincidir com o nome da classe, a presença do tipo de retorno void impede que ele seja tratado como um construtor.

}

Encerra o método.

}

Encerra a definição da classe.

Esse caso pode causar confusão para iniciantes, mas o compilador distingue construtores de métodos exclusivamente pela ausência de tipo de retorno, não pelo uso de letras maiúsculas ou pela posição no código.