Construtor privado em Java: casos de uso explicados com exemplo
Publicados: 2021-04-09Índice
Introdução
Um construtor privado em Java é usado para restringir a criação de objetos. É um construtor de instância especial usado em classes estáticas somente para membros. Se um construtor for declarado como privado, seus objetos só poderão ser acessados de dentro da classe declarada. Você não pode acessar seus objetos de fora da classe construtora.
Casos de Uso de Construtores Privados
Construtores privados em Java são acessados apenas de dentro da classe. Você não pode acessar um construtor privado de nenhuma outra classe. Se o objeto ainda não foi inicializado, você pode escrever uma função pública para chamar o instrutor privado. Se o objeto já estiver inicializado, você só poderá retornar a instância desse objeto. Um construtor privado em Java tem os seguintes casos de uso:
- Você pode usá-lo com classes estáticas somente para membros.
- Você pode usá-lo com utilitário estático ou classes constantes.
- Você pode usá-lo para servir classes singleton.
- Você pode usá-lo para atribuir um nome, por exemplo, criação utilizando métodos de fábrica.
- Você pode usá-lo para evitar subclasses.
Classe Singleton
O construtor privado em Java é usado para criar uma classe singleton. Uma classe singleton é uma classe em Java que limita o número de objetos da classe declarada a um. Um construtor privado em Java garante que apenas um objeto seja criado por vez. Ele restringe as instâncias de classe dentro da classe declarada para que nenhuma instância de classe possa ser criada fora da classe declarada. Você pode usar a classe singleton em conceitos de conectividade de rede e banco de dados.
Exemplo 1: O exemplo a seguir demonstra como um construtor privado em Java limita o número de objetos em uma classe singleton.
import java.io.*; classe novaTesteClass { objeto estático newTestClass = null; público int a = 20; private newTestClass() { } //criamos um construtor privado static public newTestClass displayInstance() /** *displayInstance() é um método público que usaremos para criar instância. *Chame este método para acessar essas instâncias de fora da classe. */ { if (objeto == null) objeto = newTestClass(); //objeto de classe singleton é criado objeto de retorno; } } public class SingletonClass { public static void main(String args[]) { newTestClass instância1 = newTestClass.displayInstance(); //exibindo a instância da classe singleton chamando o método público newTestClass instância2 = newTestClass.displayInstance(); //exibindo a instância da classe singleton chamando o método público instância1.a = instância1.a + 26; System.out.println(“A instância 1 criada tem o seguinte valor = ” + instância1.a); System.out.println(“A instância 2 criada tem o seguinte valor = ” + instância2.a); } } |
Saída
A instância 1 criada tem o seguinte valor = 46 A instância 2 criada tem o seguinte valor = 46 |
No programa acima, o valor da instância 2 é atualizado automaticamente quando atualizamos o valor do objeto instance1. Essa observação demonstra que tanto a instância1 quanto a instância 2 se referem ao mesmo objeto.
Exemplo 2: O exemplo a seguir demonstra como um construtor privado em Java garante que não mais de um objeto seja criado por vez.
// Programa Java para implementação de uma classe singleton Importar java.io.*; public class newTestClass { private estático newTestClass var=null; private newTestClass(){ //Construtor privado pode ser acessado dentro da classe } public static newTestClass testObject(){ // Este método garante que apenas um objeto seja criado por vez if(var==null){ var= new novaClasseTeste(); } retornar var; } public void display(){ System.out.println(“Este é um exemplo de um construtor Private usando uma classe Singleton. “); } public static void main(String args[]){ newTestClass newObject= newTestClass.testObject(); novoObjeto.display(); } } |
Saída
Este é um exemplo de um construtor Private usando uma classe Singleton.
Exemplo 2: Construtor privado em Java para limitar o número de instâncias de classe.
Este exemplo demonstra como você pode limitar o número de instâncias de classe declarando um construtor privado.
classe pública restritoInstanceCreationClass { public static void main(String[] args) { RestrictInstance obj; int a=1; enquanto(a<=20) { obj = RestrictInstance.getLimInstance(); a++; } } } class RestrictInstance { public static int varCount = 0; /** *criar construtor privado que aumenta a contagem *da variável varCount após cada criação de instância */ private RestrictInstance() { varCount++; System.out.println(“Número da instância ” + varCount + ” é criado.”); }
public static sincronizado RestrictInstance getLimInstance() { if(varCount <5) { return new RestrictInstance(); } System.out.println(“Limite máximo de instâncias atingido. Você não tem permissão para criar mais instâncias.”); System.gc(); retornar nulo; } /** *exclua a instância e diminua a contagem *da variável varCount */ public void finalizar() { System.out.println(“A instância foi excluída.”); varCount–; }} |
Saída
A instância número 1 é criada. A instância número 2 é criada. A instância número 3 é criada. A instância número 4 é criada. A instância número 5 é criada. Limite máximo de instâncias atingido. Você não tem permissão para criar mais instâncias. Limite máximo de instâncias atingido. Você não tem permissão para criar mais instâncias. Limite máximo de instâncias atingido. Você não tem permissão para criar mais instâncias. Limite máximo de instâncias atingido. Você não tem permissão para criar mais instâncias. A instância é excluída. A instância é excluída. A instância é excluída. A instância é excluída. Limite máximo de instâncias atingido. Você não tem permissão para criar mais instâncias. A instância número 1 é criada. A instância número 2 é criada. A instância número 3 é criada. A instância número 4 é criada. A instância número 5 é criada. Limite máximo de instâncias atingido. Você não tem permissão para criar mais instâncias. Limite máximo de instâncias atingido. Você não tem permissão para criar mais instâncias. Limite máximo de instâncias atingido. Você não tem permissão para criar mais instâncias. Limite máximo de instâncias atingido. Você não tem permissão para criar mais instâncias. Limite máximo de instâncias atingido. Você não tem permissão para criar mais instâncias. Limite máximo de instâncias atingido. Você não tem permissão para criar mais instâncias. Limite máximo de instâncias atingido. Você não tem permissão para criar mais instâncias. Limite máximo de instâncias atingido. Você não tem permissão para criar mais instâncias. Limite máximo de instâncias atingido. Você não tem permissão para criar mais instâncias. Limite máximo de instâncias atingido. Você não tem permissão para criar mais instâncias. A instância é excluída. A instância é excluída. A instância é excluída. A instância número 1 é criada. A instância número 2 é criada. A instância número 3 é criada. A instância número 4 é criada. A instância número 5 é criada. |
Aprenda cursos de software online das melhores universidades do mundo. Ganhe Programas PG Executivos, Programas de Certificado Avançado ou Programas de Mestrado para acelerar sua carreira.
Conclusão
O código usado no artigo é apenas para fins explicativos. Você pode modificar as declarações fornecidas nos exemplos conforme suas necessidades. Neste blog, discutimos como um construtor privado em Java limita o número de objetos em uma classe singleton.
Você pode experimentar o código para fortalecer o conhecimento do construtor Java . Se você deseja obter uma compreensão profunda de Java, confira o curso upGrad Executive PG Program in Full Stack Development , desenvolvido para profissionais que trabalham para ganhar experiência nessa área.
O que são construtores em programação?
Construtores em programação são os métodos que são chamados automaticamente quando um objeto é inicializado. A finalidade do construtor é inicializar o objeto. Construtores sempre devem ser públicos e são declarados sem nenhum tipo de retorno. Construtores são usados para inicializar o objeto e realizar outras tarefas que podem ser feitas apenas uma vez. Construtores também são usados para realizar a inicialização de uma classe, ou seja, para realizar tarefas que criam a classe.
Quais são os tipos de construtores em Java?
Existem cinco tipos de construtores em Java. São eles: Construtores sem argumentos: Possui uma implementação padrão, que é executada quando a classe é carregada na memória. Uma classe que não tem construtor sem argumento DEVE ser declarada como final. Construtores padrão: Este construtor é criado quando a classe é escrita em Java e é usado para inicializar todas as variáveis (atributos) da classe com seus valores padrão (zero ou nulo). Construtores parametrizados: Este construtor é usado para inicializar algumas variáveis de alguns valores. Construtores sem valor de retorno: é usado para inicializar algumas variáveis de alguns valores. Construtores com valor de retorno: é usado para inicializar algumas variáveis de alguns valores e também retorna com um valor.
O que é um construtor privado em Java?
Construtores privados podem ser usados para criar uma classe imutável. Sem usar construtores privados, podemos criar classes imutáveis declarando a classe final e criando todos os atributos como final (por exemplo, private final String name;). Um construtor privado não pode ser chamado diretamente por objetos cliente da classe. Eles só podem ser chamados internamente por métodos da classe (mesmo privados). Você pode ter um construtor privado com um ou mais parâmetros. Você não pode ter o tipo de retorno do construtor sendo booleano primitivo. Pode ser String ou Class.