
Aaron Quiroga
PreguntaEn el ejemplo, quitar la palabra “static” de la nueva clase anidada que creamos no cambia el programa. No llegué a entender del todo la diferencia del static en las clases anidadas. Otra cosa que sucede es que, tanto si la clase anidada es “public static”, como “public” o “private” de cualquier manera no me permite llamar funciones de la clase externa Doctor; según el IDE por “intentar llamar un método no-estático en un entorno estático”, a pesar de no incluir la palabra static como modificador de acceso de la clase anidada.
•) ¿Veremos esto en próximas clases?

Fernando Ariel Rodriguez
Yo tambien tuve que experimentar un poco para entender un poco más a las clases estáticas. Pero encontré un ejemplo en el que si le sacas el static, el código se rompe
public class Outer { static class Inner{ public void printHola(){ System.out.println("hola"); } } public static void main(String[] args) { Outer.Inner inner = new Outer.Inner(); inner.printHola(); } }
Luego para poder instanciar una clase no estática (que se ve en la próxima clase) tienes que hacer lo siguiente.
public class Outer { class Inner{ public void printHola(){ System.out.println("hola"); } } public static void main(String[] args) { Outer outer = new Outer(); Outer.Inner inner = outer.new Inner(); inner.printHola(); } }

Massimo Di Berardino
Hola Aaron, sería más claro si muestras el código que estás escribiendo, pero por lo que entendi, si intentas llamar metodos no estaticos que pertenecen a la clase externa desde la clase anidada deberias instanciar un Doctor en la clase interna, por que si bien esta está anidada en la clase externa, ella no tiene acceso a los elementos de la clase externa desde la palabra reservada this que supongo que es como la estas intentando llamar, y todo esto que te digo aplica a la inversa, para aclarar un poco, lo estatico no requiere ser instanciado y lo llamas desde donde quieras mientras tengas acceso a ello por ejemplo
Anidada.MiMetodo();
si no es estatica prodias hacer algo asi para solo llamar al metodo y no tener una variable suelta sin implementar
new Anidada().MiMetodo();