English | 简体中文 | 繁體中文 | Русский язык | Français | Español | Português | Deutsch | 日本語 | 한국어 | Italiano | بالعربية
Neste exemplo, vamos aprender a implementar um construtor privado em Java.
Para entender este exemplo, você deve entender o seguinteProgramação JavaTema:
class Test { //Cria o construtor privado private Test() { System.out.println("Este é o construtor privado."); } //Cria um método público estático public static void instanceMethod() { //Cria uma instância da classe Test Test obj = new Test(); } } class Main { public static void main(String[] args) { //Chama instanceMethod() Test.instanceMethod(); } }
Resultados de saída
Este é o construtor privado
No exemplo acima, criamos o construtor privado da classe Test. Portanto, não podemos criar o objeto dessa classe fora dela.
É por isso que criamos um método público estático chamado instanceMethod() dentro da classe, que é usado para criar o objeto da classe Test. Dentro da classe Main, chamamos esse método usando o nome da classe.
O padrão de design Singleton em Java garante que uma classe tenha apenas uma instância. Para isso, usamos o construtor privado.
class Language { //Cria uma variável estática pública do tipo da classe private static Language language; //Construtor privado private Language() { System.out.println("Construtor privado interno"); } //Método público estático public static Language getInstance() { //Cria um objeto (se ainda não foi criado) if(language == null) { language = new Language(); } //Retorna o objeto singleton return language; } public void display() { System.out.println("Implementou o padrão Singleton"); } } class Main { public static void main(String[] args) { Language db1; //Chame o método getInstance db1= Language.getInstance(); db1.display(); } }
Resultados de saída
Construtor privado interno Implementou o padrão Singleton
No exemplo acima, criamos uma classe chamada Languages. A classe contém:
language - Variável privada de tipo de classe
Language() - Construtor privado
getInstance() - Método público estático de classe
display() - Método público
Como o construtor é privado, não podemos criar objetos Language a partir da classe externa. Portanto, criamos o objeto da classe dentro do método getInstance().
mas configuramos a condição para criar apenas um objeto. E o método retorna o objeto.
Atenção a esta linha,
db1 = Language.getInstance();
Aqui,
db1 é uma variável do tipo Language
Language.getInstance() - Chamada de método getInstance()
Como o getInstance() retorna um objeto da classe Language, então para db1A variável atribuiu o objeto retornado.
Por fim, chamamos o método display() usando um objeto.