Easier to read with cream paper, a tint, more contrast or larger text? Choose your colours and text, once, for every page.

Vista previa

Clases abstractas e interfaces

Esta es la primera página de la lección. Léela y prueba las actividades. El resto está en el curso completo.

40 minutos

Una promesa que otros cumplen

Pagas en el bar. Puedes hacerlo en efectivo, con tarjeta o con el móvil.

El camarero no pregunta cómo funciona cada forma. Solo sabe que todas cumplen una promesa: sirven para pagar.

En Java hay dos herramientas para esto: las clases abstractas y las interfaces.

Palabras clave

PalabraQué significaEjemplo
Clase abstractaUna clase padre incompleta. No se puede crear con new, solo sirve para heredar de ella.abstract class Subscription
Método abstractoUn método sin cuerpo. Cada clase hija está obligada a escribirlo.abstract double monthlyPrice();
InterfazUna lista de métodos prometidos, todos sin cuerpo.interface Rechargeable
implementsLa palabra con la que una clase dice que cumple una interfaz.class Phone implements Rechargeable
ContratoLo que una clase promete tener, sin decir cómo lo hace.minutesToFull()

Las celdas que rellenan los estudiantes quedan en blanco en esta vista previa.

Un padre que deja un hueco

Piensa en una suscripción del móvil: música, vídeo, deporte. Todas tienen un nombre y un precio al mes.

Pero no existe una "suscripción cualquiera". Siempre es una concreta. Y cada una cobra un precio distinto.

Por eso creamos una clase abstracta. Escribe lo que es común y deja un método abstracto para el precio.

Pruébalo: suscripciones

Código: java
abstract class Subscription {
    String name;
    Subscription(String name) { this.name = name; }
    // El padre no sabe el precio: lo dirá cada hija.
    abstract double monthlyPrice();

    String summary() {
        return name + ": " + monthlyPrice() + " euros al mes";
    }
}

class MusicPlan extends Subscription {
    MusicPlan() { super("Música"); }
    @Override double monthlyPrice() { return 10.0; }
}

class VideoPlan extends Subscription {
    VideoPlan() { super("Vídeo"); }
    @Override double monthlyPrice() { return 6.5; }
}

public class Main {
    public static void main(String[] args) {
        System.out.println(new MusicPlan().summary());
        System.out.println(new VideoPlan().summary());
    }
}

Repaso rápido

Inténtalo

Repaso rápido

3 preguntas
Pruébalo: tus respuestas se corrigen aquí y después se olvidan. Inicia sesión si quieres que se guarde tu puntuación y continuar donde lo dejaste.Iniciar sesión para guardar tu puntuación

Tus respuestas se corrigen aquí y no se guardan. Una cuenta guarda tus resultados.

Ejemplo resuelto: qué compila y qué no

Línea¿Compila?Por qué
new Subscription("Extra")NoLa clase es abstracta
new MusicPlan()SíEs una clase completa
Subscription s = new VideoPlan();SíUna variable del padre guarda una hija
s.summary()SíEscribe "Vídeo: 6.5 euros al mes"

Las celdas que rellenan los estudiantes quedan en blanco en esta vista previa.

Una lista de promesas

A veces las clases no se parecen en nada. Un móvil y un patinete eléctrico no tienen un padre común. Pero los dos se enchufan.

Una interfaz es una lista de métodos prometidos. Escribes interface, y cada método va sin cuerpo.

Una clase dice implements y cumple la promesa escribiendo cada método.

Pruébalo: cosas que se enchufan

Código: java
interface Rechargeable {
    int minutesToFull();
}

class Phone implements Rechargeable {
    public int minutesToFull() { return 90; }
}

class Scooter implements Rechargeable {
    public int minutesToFull() { return 240; }
}

public class Main {
    public static void main(String[] args) {
        Rechargeable[] things = {new Phone(), new Scooter()};
        int total = 0;
        for (int i = 0; i < things.length; i++) {
            System.out.println("Tarda " + things[i].minutesToFull() + " minutos.");
            total = total + things[i].minutesToFull();
        }
        System.out.println("En total: " + total + " minutos.");
    }
}

La lección continúa

7 partes más de esta lección están en el curso completo, con los ejercicios y la comprobación final. Una cuenta te da todo.