Clases anidadas e internas


lunes, 4 de diciembre de 2023

Las clases anidadas e internas en Java están definidas dentro de otra clase y tienen acceso a los miembros de la clase contenedora, incluyendo los miembros privados.

Hay dos tipos principales de clases anidadas en Java: clases internas estáticas y clases internas no estáticas.

Clases Internas (No Estáticas)

Las clases internas no estáticas son aquellas que se definen dentro de otra clase sin la palabra clave static. Tienen acceso a todos los miembros de la clase contenedora, incluso a los miembros privados. Además, tienen acceso implícito a la instancia de la clase contenedora.

public class ClaseExterna {
    
    private int datoExterno = 10;

    // Clase interna no estática
    public class ClaseInterna {
        public void mostrarDatoExterno() {
            System.out.println("Dato externo desde la clase interna: " + datoExterno);
        }
    }
    
    public static void main(String[] args) {
        ClaseExterna externa = new ClaseExterna();
        ClaseExterna.ClaseInterna interna = externa.new ClaseInterna();
        interna.mostrarDatoExterno();
    }
}

En este ejemplo la clase ClaseExterna tiene un atributo llamado datoExterno inicializado con el valor 10. Contiene una clase interna no estática llamada ClaseInterna. La clase interna tiene un método público llamado mostrarDatoExterno(), que imprime el valor de datoExterno desde la clase interna.

La clase interna no estática ClaseInterna tiene acceso a todos los miembros de la clase externa, incluido el miembro privado datoExterno. Contiene un método mostrarDatoExterno() que imprime el valor de datoExterno desde la clase interna.

En el método main, se crea una instancia de la clase externa (ClaseExterna) llamada externa. Luego, se crea una instancia de la clase interna (ClaseInterna) utilizando la sintaxis externa.new ClaseInterna(). Finalmente, se llama al método mostrarDatoExterno() desde la instancia de la clase interna, lo que imprime el valor de datoExterno desde la clase interna.

Clases Internas Estáticas

Las clases internas estáticas son similares a las no estáticas, pero se definen con la palabra clave static. A diferencia de las clases no estáticas, no tienen acceso a los miembros de la clase contenedora sin una instancia de la misma.

public class ClaseExterna {

    private static int datoEstatico = 20;

    // Clase interna estática
    public static class ClaseInternaEstatica {
        public void mostrarDatoEstatico() {
            System.out.println("Dato estático desde la clase interna estática: " + datoEstatico);
        }
    }

    public static void main(String[] args) {
        ClaseExterna.ClaseInternaEstatica internaEstatica = new ClaseExterna.ClaseInternaEstatica();
        internaEstatica.mostrarDatoEstatico();
    }
}

La clase ClaseExterna tiene un miembro estático llamado datoEstatico inicializado con el valor 20. Contiene una clase interna estática llamada ClaseInternaEstatica.

La clase interna estática ClaseInternaEstatica no tiene acceso a los miembros no estáticos de la clase externa. Sin embargo, puede acceder a miembros estáticos. Contiene un método público llamado mostrarDatoEstatico() que imprime el valor de datoEstatico desde la clase interna estática.

En el método main, se crea una instancia de la clase interna estática (ClaseInternaEstatica) utilizando la sintaxis ClaseExterna.ClaseInternaEstatica. Luego, se llama al método mostrarDatoEstatico() desde la instancia de la clase interna estática, lo que imprime el valor de datoEstatico desde la clase interna estática.

Compártelo

Compártelo en tus redes sociales y desafía a tus amigos a resolver problemas de programación. Juntos, podemos aprender y crecer.

Copiado

El codigo se ha copiado correctamente en el portapapeles.

Más Ejercicios

Continua mejorando tus habilidades de programación en Java con nuestra selección de ejercicios prácticos de la lección. ¡Haz clic en Practicar y desafía tus conocimientos!

1

Clases y objetos

Explora los fundamentos de la programación orientada a objetos en Java. Aprende sobre clases y objetos, los componentes esenciales que dan vida a la modularidad y reutilización del código en este lenguaje de programación versátil.

2

Atributos y métodos

Explora la esencia de la programación orientada a objetos en Java al comprender a fondo los atributos y métodos. Descubre cómo estos elementos fundamentales son cruciales para la creación de clases y objetos, proporcionando modularidad y eficiencia en el desarrollo de software.

3

Constructores

Descubre la importancia de los constructores en Java y cómo inicializan objetos de manera crucial. Aprende las mejores prácticas para garantizar la coherencia en la creación de instancias y optimiza tu código con nuestros ejemplos detallados.

4

Modificadores de acceso

En Java los modificadores de acceso son fundamentales para controlar la visibilidad y el alcance de los atributos y métodos dentro de una clase. 

5

Getters y Setters

Aprende a crear interfaces seguras con métodos getters y setters en Java. Descubre cómo estos métodos favorecen la encapsulación y proporcionan un control preciso sobre la modificación de atributos.

6

Clase Persona y método ToString()

Crea un programa en Java que solicite tres nombres de personas al usuario y los almacene en un array de objetos de tipo Persona.

7

Constructores y destructores

Crea un programa en Java que solicite tres nombres de personas al usuario y los almacene en un array de objetos de tipo Persona.

8

Operador instanceof

El operador instanceof en Java se utiliza para verificar si un objeto es una instancia de una clase, subclase o implementa una interfaz específica.

9

Clases anidadas e internas

Las clases anidadas e internas en Java están definidas dentro de otra clase y tienen acceso a los miembros de la clase contenedora, incluyendo los miembros privados.

10

Clase persona, estudiante y profesor

Cree un nuevo proyecto en Java con tres clases más otra clase para probar la lógica del código. Las clases principales del programa son las siguientes clases.

11

Clase álbum de fotos

Cree un programa en Java para gestionar un álbum de fotos utilizando la programación orientada a objetos.

12

Creación de Clases y Objetos

Crear una clase llamada "Persona" con atributos como nombre, edad y dirección. Luego, crear objetos de la clase "Persona" e inicializar sus atributos. Implementar métodos para mostrar y modificar estos atributos.

13

Herencia

La herencia en Java es uno de los pilares fundamentales de la programación orientada a objetos (POO). Proporciona un mecanismo mediante el cual una clase puede heredar propiedades y comportamientos de otra clase.

14

Clases abstractas

Una clase abstracta es una clase que no puede ser instanciada directamente. Esto significa que no puedes crear objetos directamente a partir de una clase abstracta mediante el operador new.

15

Herencia de objetos

Crea un programa en Java que solicite tres nombres de personas al usuario y los almacene en un array de objetos de tipo Persona.

16

Formas - Diagrama de clases

Cree un programa en Java que represente el siguiente diagrama de clases UML.

17

Interfaces

Crea un programa en Java que implemente una interfaz IVehiculo con dos métodos, uno para Conducir de tipo void y otro para Repostar de tipo bool que tenga un parámetro de tipo entero con la cantidad de gasolina a repostar.

18

Clases abstractas

Crea un programa en Java que implemente una clase abstracta Animal que tenga una propiedad Nombre de tipo texto y tres métodos SetNombre(string nombre), GetNombre y Comer.

Programación orientada a objetos

Practica ejercicios en Java de programación orientada a objetos. Aprende a usar constructores, destructores, la herencia, las interfaces entre otros.

Conceptos fundamentales
Ejercicios prácticos

Seguir aprendiendo

Curso de Programación en C#

Curso de programación gratuito con ejercicios y soluciones prácticas en C#. ¡Comienza a aprender ahora mismo!

Exercises C# App

Lleva tus lecciones de Exercises C# a todas partes con nuestra aplicación para Android. Descárgala ahora desde Google Play.