Clases abstractas
Declare clases y métodos abstractos, comprenda por qué no se pueden instanciar y observe cómo las subclases completan el diseño.
Clases abstractas es una lección gratuita de Java Academy en CoddyKit. Esta es la lección 1 de 3. Puedes leer la lección completa abajo gratuitamente — luego la practicas en el navegador con un editor de código integrado y un tutor de IA 24/7. Forma parte de la ruta de aprendizaje de Java Academy, y tu progreso se sincroniza en la web y la app de CoddyKit. El curso de Java Academy incluye 3 lecciones en total.
¿Qué es una clase abstracta?
Clase abstracta: define una idea común y puede dejar algunos métodos sin cuerpo. También puede incluir métodos normales con código. Piense en ella como una plantilla que obliga a las subclases a completar los elementos que faltan.
Código: no se puede instanciar
Las clases abstractas no se pueden instanciar directamente. Aun así, pueden contener métodos normales que todas las subclases heredan.
public class Main {
// Abstract class with one abstract method and one concrete method
static abstract class Animal {
abstract void speak(); // must be implemented by subclasses
void info() { // concrete method allowed
System.out.println("I am an animal.");
}
}
public static void main(String[] args) {
// Animal a = new Animal(); // Uncommenting would not compile: cannot instantiate abstract class
System.out.println("You cannot create an Animal directly if it is abstract.");
}
}
¿Por qué usar clases abstractas?
Permiten concentrar el código compartido en un solo lugar y obligan a cada subclase a proporcionar los métodos importantes. Úselas cuando parte del comportamiento sea común, pero otra parte varíe entre los tipos concretos.
Código: implementar un método abstracto
Las subclases deben implementar los métodos abstractos. Los métodos concretos de la clase abstracta se heredan y se pueden reutilizar.
public class Main {
static abstract class Animal {
abstract void speak();
void info() {
System.out.println("I am an animal.");
}
}
static class Dog extends Animal {
// Must implement speak()
void speak() {
System.out.println("Woof!");
}
}
public static void main(String[] args) {
Dog d = new Dog(); // allowed: Dog is concrete
d.info(); // inherited concrete method
d.speak(); // Dog's implementation
}
}
Reglas y combinación
Reglas: una clase abstracta puede tener campos, constructores y métodos concretos. Una subclase solo se convierte en concreta después de implementar todos los métodos abstractos; de lo contrario, también es abstracta.
Código: abstracto y polimorfismo
Las clases abstractas funcionan bien con el polimorfismo. El código puede utilizar el tipo abstracto y cada subclase proporciona el comportamiento adecuado.
public class Main {
static abstract class Animal {
abstract void speak();
}
static class Dog extends Animal {
void speak() { System.out.println("Woof!"); }
}
static class Cat extends Animal {
void speak() { System.out.println("Meow!"); }
}
public static void main(String[] args) {
// Polymorphism through abstract base type
Animal[] pets = { new Dog(), new Cat() };
for (int i = 0; i < pets.length; i = i + 1) {
pets[i].speak(); // each subclass provides its own behavior
}
}
}
Comprobación de las clases abstractas
Comprobación rápida: ¿Qué afirmación sobre las clases abstractas es correcta?
Repaso
Repaso: Use clases abstractas para compartir código y exigir métodos fundamentales. No puede instanciarlas directamente, pero las subclases completan el comportamiento.
Preguntas frecuentes
¿La lección «Clases abstractas» es gratis?
Sí — el texto completo de «Clases abstractas» es gratis para leer aquí en la web. Para practicarla de forma interactiva (editor de código integrado y tutor de IA 24/7) y desbloquear el resto del curso de Java Academy, actualiza a CoddyKit PRO. El curso de Java Academy incluye 3 lecciones en total.
¿Qué aprenderé en «Clases abstractas»?
Declare clases y métodos abstractos, comprenda por qué no se pueden instanciar y observe cómo las subclases completan el diseño. Practicas Java Academy con código real que ejecutas directamente en el navegador, y un tutor de IA 24/7 responde tus preguntas mientras trabajas en la lección.
¿Necesito experiencia previa para empezar Java Academy?
No se requiere experiencia previa. Java Academy en CoddyKit está estructurado para principiantes hasta estudiantes avanzados, así que puedes empezar aquí o desde el inicio y avanzar a tu ritmo. Esta es la lección 1 de 3.
¿Cuánto tiempo toma la lección «Clases abstractas»?
La mayoría de las lecciones de CoddyKit toman alrededor de 5–10 minutos. Cada una es compacta e interactiva, así que avanzas constantemente y retomas exactamente por donde dejaste en la web y la app.
¿Puedo escribir y ejecutar código en esta lección de Java Academy?
Sí. Cada lección de Java Academy incluye un editor de código integrado, así que escribes y ejecutas código real directamente en tu navegador y obtienes retroalimentación instantánea de IA — sin configuración local necesaria.
Todas las lecciones de este curso
- Clases abstractas
- Interfaces (introducción y diferencias)
- Conversión ascendente/descendente e instanceof