ejemplo: colas de tamaño limitado

Se redefinen los métodos por razones de funcionalidad (se cambia el funcionamiento).

class Cola

public class Cola {

    private List<String> datos = new ArrayList<String>();

 

    public Cola() {

    }

 

    // mete sin límite

    public void mete(String s) {

        datos.add(s);

    }

 

    public String saca() {

        return datos.remove(0);

    }

 

    public int size() {

        return datos.size();

    }

}

class ColaMax1 extends Cola

public class ColaMax1

        extends Cola {

    private final int max;

 

    public ColaMax1(int max) {

        this.max = max;

    }

 

    // mete si no hemos llegado al límite

    @Override

    public void mete(String s) {

        if (size() < max)

            super.mete(s);

    }

class ColaMax2 extends Cola

public class ColaMax2

        extends Cola {

    private final int max;

 

    public ColaMax2(int max) {

        this.max = max;

    }

 

    // saca el primero si se va a superar el límite

    @Override

    public void mete(String s) {

        if (size() >= max)

            super.saca();

        super.mete(s);

    }

}

 

Temas relacionados

145. Redefinición de métodos [method overriding] (concepto)