Junior
¿Qué tipos de clases existen en Java?
sobes.tech AI
Respuesta de la IA
- Clases regulares (regular / concretas): Pueden ser instanciadas, contienen campos, métodos, constructores.
- Clases abstractas: No pueden ser instanciadas directamente. Pueden contener métodos abstractos (sin implementación) y métodos normales. Se utilizan para definir características comunes para las subclases.
abstract class AbstractClass { abstract void abstractMethod(); // Método abstracto void regularMethod() { System.out.println("Método regular"); } } - Clases anidadas (nested classes): Se declaran dentro de otra clase. Pueden ser:
- Clases anidadas estáticas (static nested classes): No tienen acceso a los miembros no estáticos de la clase exterior. Se crean sin una instancia de la clase exterior.
class OuterClass { static class StaticNestedClass { // ... } } - Clases internas (inner classes): Tienen acceso a todos los miembros de la clase exterior (incluidos los privados). Están vinculadas a una instancia de la clase exterior.
class OuterClass { class InnerClass { // Tiene acceso a los miembros de OuterClass } } - Clases locales (local classes): Se declaran dentro de un método, ciclo o bloque if. Su acceso está limitado a su ámbito.
class OuterClass { void someMethod() { class LocalClass { // Declarada localmente } LocalClass obj = new LocalClass(); } } - Clases anónimas (anonymous classes): Sin nombre, se crean junto con la declaración o instanciación. Se usan para uso único.
interface MyInterface { void myMethod(); } MyInterface anon = new MyInterface() { @Override public void myMethod() { System.out.println("Clase anónima"); } };
- Clases anidadas estáticas (static nested classes): No tienen acceso a los miembros no estáticos de la clase exterior. Se crean sin una instancia de la clase exterior.
- Clases record (desde Java 14): Sintaxis compacta para declarar clases inmutables destinadas a almacenar datos (POJO).
record Person(String name, int age) { // Constructor, getters, equals(), hashCode(), toString() generados automáticamente }