La primera pregunta que se hace en relación con constructores privados en entrevistas es,
podemos tener constructor privado en una clase?
Y a veces la respuesta dada por el candidato es: No, no podemos tener constructores privados.
Así que me gustaría decir, Sí, puede tener constructores privados en una clase.
No es ninguna cosa especial, trata de pensar de esta manera,
Privado: nada privada se puede acceder desde dentro de la única clase.
Constructor: método que tiene el mismo nombre que el de clase y se invoca implícitamente cuando se crea el objeto de la clase.
o puede decir, para crear un objeto que necesita llamar a su constructor, si no se llama al constructor, no se puede crear una instancia del objeto.
Significa que, si tenemos un constructor privado en una clase, entonces sus objetos solo se pueden instanciar dentro de la clase. Entonces, en palabras más simples, puede decir que si el constructor es privado, no podrá crear sus objetos fuera de la clase.
Cuál es el beneficio Este concepto se puede aplicar para alcanzar objeto singleton (que significa sólo un objeto de la clase puede ser creado).
Véase el siguiente código,
class MyClass{
private static MyClass obj = new MyClass();
private MyClass(){
}
public static MyClass getObject(){
return obj;
}
}
class Main{
public static void main(String args[]){
MyClass o = MyClass.getObject();
//The above statement will return you the one and only object of MyClass
//MyClass o = new MyClass();
//Above statement (if compiled) will throw an error that you cannot access the constructor.
}
}
Con respecto a Java, preguntas de la entrevista más similares se pueden contestar "Sí, se puede hacer prácticamente nada, pero en caso de que ?! general, no!" Personalmente, creo que es una pregunta estúpida. No quiero que mis desarrolladores lo hagan, así que no me importa si lo saben. Detalles de lenguaje más prácticos deberían importar mucho más. Conocer la utilidad más general de la reflexión es probablemente suficiente. Comprender los patrones de diseño de OO y los errores en el lenguaje es mucho más importante que los constructos de lenguaje oscuros que deberían evitarse. – nicerobot
@nicerobot, estoy de acuerdo con usted, algunas veces estas técnicas derrotan el significado real del propósito – gmhk
¿es una buena práctica permitir el acceso al constructor privado utilizando la clase de reflexión? – gmhk