Para que ? (modificador de acesso no construtor)

Olá!!

Pessoal,

O construtor default ou ñ é chamado assim que instanciamos um objeto certo?!

A dúvida é:

Então para que alguém colocaria modificadores de acesso “public”, “protected”, “private” em um construtor sendo que

ele ñ pode ser invocado como um método??

[color=red] Moderador: utilize um titulo que diga algo[/color]

Amigo, seja mais coerente no título do tópico, isso ajuda pessoas com a mesma dúvida que você futuramente, ao pesquisarem os tópicos…

O construtor com modificadores serve para proteção da instância de sua classe… o construtor não pode ser utilizado como método, somente no momento da instância…

exemplo, uma classe singleton (desing pattern que só permite uma instância do objeto) utiliza um construtor privado não permitindo que ninguém estancie a classe… só recuperando a instância criada na primeira utilização através de um método getIntance() por padrão

Você já ouviu falar de um Design Pattern chamado Singleton?

Singleton é um Design Pattern que se refere a uma classe que é instanciada uma única vez, ou seja, é uma classe que possui uma única instância. Tipicamente o pattern Singleton é utilizado para representar algo único em um sistema.

public class Einstein { private static final Einstein INSTANCE = new Einstein(); private Einstein() { ... } public static Einstein getInstance() { return INSTANCE; } ... }

Este é apenas um exemplo de classe que usa um construtor private.

Pitágoras, sempre que instanciamos um objeto, o fazemos justamente invocando seu construtor, seja ele padrão ou modificado.
A palavra-chave new é quem invoca o construtor do objeto.
Utilizar modificadores pode ser util por exemplo quando se quer que um objeto seja Singleton, ou seja, exista apenas uma instância do mesmo. Assim, uma classe Singleton seria como este exemplo:

public class ExemploSingleton {

    /* Instancia do objeto */
    public ExemploSingleton instance;

    /*  Método que retorna uma instância do objeto */
    public static ExemploSingleto getInstance() {
        if (instance == null) {
            instance = new ExemploSingleton();
        }
        return instance;
    }

    /* Construtor PRIVADO de modo que a classe não seja instanciada
        externamente */
    private ExemploSingleton {

    }
 
}

Esclarecido ?

Abraço.

Valew galera!!