Un compañero de trabajo (que es muy nuevo en Java) se detuvo en el día de hoy y me preguntó qué parecía una pregunta muy simple. Desafortunadamente, hice un trabajo absolutamente horrible al tratar de explicárselo. Tenía un libro que tenía un poco de código que se veía así:¿Por qué puede crear una clase en su definición?
class XCopy {
public static void main(String[] args) {
XCopy x = new XCopy(); // 1
x.doIt();
}
public void doIt() {
// Some code...
}
}
Estaba confundido en la línea 1. Lo que quería saber era por qué una nueva instancia de XCopy podría crearse dentro de la definición de la clase XCopy . Pensó que esto habría dado algún tipo de error de referencia directa. Después de todo, aún no habíamos terminado de declarar cuál era la clase XCopy, entonces, ¿cómo podríamos crear una?
Ciertamente sé que este código es válido pero, cuando intenté explicárselo, me encontré tropezando con la respuesta y me temo que lo dejé más confundido que cuando comenzó. Me gustaría escuchar algunas otras explicaciones de por qué esto funciona.
¿Alguna idea? ¿Por qué se puede crear una instancia de una clase dentro de la definición de la clase?
¿Qué son los "experimentos de una sola clase"? – Andru
@Andru Es solo cuando estás experimentando con el idioma, y no quieres crear un programa completo, así que simplemente pones todo en una sola clase, incluido el método principal – Eames
@Mathew, solo quiero volver a comprobar mi conocimiento, es decir, una La clase se carga primero en la memoria y luego se llama a la principal estática, ¿verdad? – light