No. constructores no son métodos ordinarios en este respecto. El objetivo del constructor es, bueno, construir una nueva instancia de la clase.
Por lo tanto, se puede invocar en su alcance estática también. Sólo pensar en ello: si necesitaba una instancia existente de su clase con el fin de crear una nueva instancia de la misma, sólo tendría que nunca sería capaz de crear una instancia que nunca.
algunas aclaraciones:
método estática puede no no puede llamar a los métodos no estáticos.
No del todo. Puede llamar a un método no estático desde un método estático, solo necesita alcance a un objeto específico de esa clase. Es decir.
p.k();
funcionaría perfectamente en la muestra del código anterior.
La llamada
k();
estaría bien dentro de un método de instancia (no estático). Y sería equivalente a
this.k();
El implícita this
se refiere a la instancia actual de la clase. Siempre que el compilador vea una llamada no calificada como k()
dentro de un método de instancia, automáticamente lo alineará con this.
. Sin embargo, dado que los métodos estáticos no están vinculados a ninguna instancia de la clase, usted (y el compilador) no pueden hacer referencia a this
dentro de un método estático. Por lo tanto, debe nombrar explícitamente una instancia de la clase para llamar a un método de instancia.
Si fue imposible llamar a un constructor desde un método estático, entonces no pudo construir ningún objeto nunca. –