Empecé a escribir mi primer Java program.¿Cómo es que la clase que contiene el método principal no está instanciada y todavía está bien en Java?
class HelloWorldApp {
public static void main(String[] args) {
System.out.println("Hello World!"); // Display the string.
}
}
El programa funciona bien solo con el código anterior. Pero según mi conocimiento OOP, un class
es solo un concepto abstracto y no cobra vida hasta que creas un objeto de este tipo. Y luego, a través de ese objeto llamamos a los métodos/funciones dentro de la clase.
Sin embargo, en este ejemplo en particular, parece que main
método se llama incluso sin crear un objeto de la class
HelloWorldApp
es el objeto creado en otro lugar? Si es así, ¿cómo sabe esa parte del código mi class
nombre HelloWorldApp
?
¿Eso significa que puedo llamar alrededor de cualquier función estática dentro de cualquier otra clase? ¿No minimiza el concepto de encapsulación? –
sí puede, los campos/métodos estáticos están asociados con la clase (por clase cargada y no con el Objeto), si son públicos, puede hacerlo –
La encapsulación no es una regla impuesta por el compilador sino un principio que los programadores utilizar para tratar de crear un mejor código. El lenguaje y el compilador pueden ayudarnos a lograr la encapsulación, pero no nos la imponen. Incluso un lenguaje orientado a objetos puro como Smalltalk no te obliga a seguir la encapsulación. En Smalltalk, sin embargo, las clases son en sí mismos objetos reales para que pueda enviarles mensajes a los que responden. Incluso puede heredarlos en subclases y hacer que las subclases invoquen super. –