En el ejemplo, quitar la palabra “static” de la nueva clase anidada que creamos <strong>no</strong> cambia el programa. No llegué a enten...

Aaron Quiroga

Aaron Quiroga

Pregunta
studenthace 5 años

En 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?
2 respuestas
para escribir tu comentario
    Fernando Ariel Rodriguez

    Fernando Ariel Rodriguez

    studenthace 3 años

    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

    Massimo Di Berardino

    studenthace 5 años

    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();
Curso de Java SE Orientado a Objetos

Curso de Java SE Orientado a Objetos

Programa aplicaciones en Java usando orientación a objetos. Aprende a utilizar clases, herencia, polimorfismo, interfaces, encapsulamiento, métodos, modularidad y más, simulando la administración de citas médicas.

Curso de Java SE Orientado a Objetos
Curso de Java SE Orientado a Objetos

Curso de Java SE Orientado a Objetos

Programa aplicaciones en Java usando orientación a objetos. Aprende a utilizar clases, herencia, polimorfismo, interfaces, encapsulamiento, métodos, modularidad y más, simulando la administración de citas médicas.