Como implementar o construtor privado em Java



Este artigo fornecerá a você um conhecimento detalhado e abrangente de Private Constructor em Java e seu uso com exemplos.

Construtores são utilizados para inicializar o estado de um objeto. Semelhante aos métodos, um construtor também pode conter uma coleção de instruções, que podem ser chamadas apenas de instruções. Neste artigo, discutiremos Construtor privado em na seguinte ordem:

Introdução ao Construtor em Java

Os construtores são executados no momento da criação do objeto. Para entender melhor o construtor e seus aplicativos, basta pensar em uma caixa como uma classe. Uma classe Box é considerada como tendo algumas variáveis ​​de classe (ou seja, comprimento, largura e altura). No entanto, no momento da criação de seu objeto (ou seja, a caixa existe na memória do computador), então pode existir uma caixa sem nenhum valor definido para suas quantidades dimensionais.





Obviamente, não.

Conseqüentemente, um construtor é introduzido para atribuir valores a variáveis ​​de classe na criação do objeto. Isso pode ser feito explicitamente pelo programador ou pelo próprio Java. Quando feito pelo próprio Java, é denominado como um construtor padrão.



É imperativo entender que qualquer método que possua especificador de acesso fornecido pelo codificador ao construtor, que é tornado privado, só pode ser acessado dentro da própria classe.

Construtor privado em Java

Classe Singleton

Pelo próprio nome, podemos chamar uma classe de singleton se ele restringir o número de objetos dessa classe a um. Uma classe não pode ter mais de um único objeto em tais casos. As classes singleton são usadas exaustivamente em conceitos como rede e conectividade de banco de dados. Aula Singleton é um aula particular .



Deve haver outra maneira de extrair a instância da classe e um método de retorno para recuperar o resultado. Abaixo está uma ilustração adequada do mesmo. O primeiro pictograma representa o resultado provável onde o valor de “a.x” equivale a 20 e o valor de “b.x” resulta em 20 também. No código, embora definamos a classe privada singleton, os construtores dela não podem ser acessados ​​fora da classe.

Valor de a.x = 20

Valor de b.x = 20

// Programa Java para demonstrar a implementação do padrão // Singleton usando construtores privados. import java.io. * class MySingleton {instância estática de MySingleton = null public int x = 10 // construtor privado não pode ser acessado fora da classe private MySingleton () {} // Método de fábrica para fornecer aos usuários instâncias estáticas públicas MySingleton getInstance () {if (instance == null) instance = new MySingleton () return instance}} // Classe do driver Main {public static void main (String args []) {MySingleton a = MySingleton.getInstance () MySingleton b = MySingleton.getInstance () ax = ax + 10 System.out.println ('Value of ax =' + ax) System.out.println ('Value of bx =' + bx)}}

Impacto do Construtor Privado em Java

Os construtores privados não podem acessar classes derivadas de outra classe. Portanto, temos que fornecer uma função pública, que chama o construtor privado. No caso, o objeto não foi inicializado, ou temos que enviar de volta uma instância para o objeto se ele foi inicializado. Isso é especialmente útil para objetos que não podem ser inicializados. Um construtor privado é usado nos seguintes casos:

  • As respectivas classes, que possuem apenas métodos e membros estáticos.
  • As classes específicas, que só usaram amplamente membros finais estáticos (constantes).
  • Para incorporar singletons.
  • Para incorporar os métodos de fábrica.

Para utilizar enumerações, que são seguras para tipos.

como transformar double em int

Encadeamento de construtor interno

Encadeamento de construtor interno é quando um construtor chama outro construtor da mesma classe, então pode ser referido como encadeamento de construtor. É nosso dever usar esta palavra-chave para chamar outro construtor da classe. Em alguns casos, é usado para definir alguns valores padrão das variáveis ​​de classe. Lembre-se também de que outra chamada do construtor deve ser a primeira instrução no bloco de código.

Além disso, não deve haver chamadas recursivas, o que criará um loop infinito. Vamos agora dar uma olhada em um exemplo de encadeamento de construtor no programa java.

pacote com.journaldev.constructor public class Employee {private int id private String name public Employee () {this ('John Doe', 999) System.out.println ('Default Employee Created')} public Employee (int i) { this ('John Doe', i) System.out.println ('Funcionário criado com nome padrão')} público Funcionário (String s, int i) {this.id = i this.name = s System.out.println ( 'Employee Created')} public static void main (String [] args) {Employee emp = new Employee () System.out.println (emp) Employee emp1 = new Employee (10) System.out.println (emp1) Employee emp2 = new Employee ('Pankaj', 20) System.out.println (emp2)} @Override public String toString () {return 'ID =' + id + ', Name =' + name} public int getId () {return id } public void setId (int id) {this.id = id} public String getName () {return name} public void setName (String name) {this.name = name}}

Padrão de Design de Classe Singleton

  • Membro de nível de classe (método de inicialização rápida):

  1. Primeiro, faça uma instância estática constante privada de uma classe singleton.

  2. Em seguida, escreva um método estático, que retorna o objeto de uma classe singleton, que criamos como uma instância de membro da classe.

  3. É possível marcar um membro estático como o público para acessar a instância estática constante diretamente.

  4. A classe singleton varia de uma classe Java normal em termos de instanciação. Em uma classe normal, um construtor é usado, mas para a classe singleton, usamos o método get Instance ().

  • Membro de nível de classe (método de inicialização lenta):

  1. Primeiro, inicie um construtor como privado.

  2. Em seguida, crie uma instância estática privada desta classe singleton. Lembre-se de NÃO instanciá-lo.

  3. Em seguida, escreva um método estático, que verifica o membro da instância estática para nulo e inicia a instância. Finalmente, ele retorna um objeto da classe singleton.

  • O membro de nível de classe (inicialização lenta com método de bloqueio duplo):

Considere dois threads em execução em que ambos entram na instrução “if” simultaneamente, enquanto a instância é nula. Onde, um thread vai para um bloco sincronizado para criar uma instância, enquanto o outro é bloqueado. Como o primeiro thread reside no bloco sincronizado, o thread na fila cria outro objeto singleton. Observe que, à medida que o segundo thread entra em um bloco sincronizado, ele falha ao verificar se a instância é não nula.

  • Usando a classe Inner aninhada (método Lazy Load):

Aqui, ele é baseado nas especificações da linguagem Java (JLS). A Java Virtual Machine carrega membros de dados estáticos apenas sob demanda. Portanto, a classe Singleton é carregada primeiro pela JVM. Portanto, não há membro de dados estáticos em uma classe

O Singleton Class Holder não carrega SINGLE_INSTANCE. Quando invocamos o método getIntance, apenas isso ocorre. JLS garante a execução da inicialização da classe. Uma provisão para sincronização explícita no método getInstance () estático para carregamento e inicialização. Como a inicialização cria a variável estática SINGLE_INSTANCE de forma sequencial, todas as chamadas simultâneas de getInstance () voltarão da mesma forma sem sobrecarga de sincronização.

  • Usando Enums

Nem todas as abordagens acima são soluções completas em todos os casos. Várias instâncias das implementações acima podem ser criadas usando reflexão. Em ambos os cenários, podemos ignorar o construtor privado e criar várias instâncias. Portanto, uma nova abordagem é criar uma classe singleton usando enums. Como os campos de enums são constantes de tempo compiladas, eles são instâncias de seu tipo de enum. Eles são construídos quando o tipo enum é referenciado pela primeira vez.

Com isso, chegamos ao fim do artigo Construtor Privado em Java. Espero que você tenha entendido os construtores privados e como eles podem ser usados ​​em Java.

Confira o pela Edureka, uma empresa de aprendizagem online confiável com uma rede de mais de 250.000 alunos satisfeitos espalhados por todo o mundo. O curso de certificação e treinamento Java J2EE e SOA da Edureka é projetado para estudantes e profissionais que desejam ser um desenvolvedor Java. O curso foi desenvolvido para dar a você uma vantagem inicial na programação Java e treiná-lo para os conceitos básicos e avançados de Java, juntamente com várias estruturas Java, como Hibernate e Spring.

Tem alguma questão para nós? Mencione isso na seção de comentários deste blog “Tutorial Java” e entraremos em contato com você o mais breve possível.