Muchas gracias Kripton, pero con dicha solución el usuario seguiría pudiendo utilizar el método remove de la clase, cosa que quiero evitar.
Lo que quiero hacer es una clase como ArrayList (por eso la heredo), pero que antes de insertar o borrar elementos mire si se cumple una condición (que un atributo de MiArrayList sea cero) y, en caso de no cumplirse no dejar realizar la operación e indicarlo con una excepción. Por lo tanto, si creo un nuevo método (remove2) tendría que invalidar de alguna forma el anterior (remove), dejando de ser la clase tan atractiva para los futuros usuarios, ya que no tendría los mismos nombres de métodos que ArrayList.
¿A alguien se le ocurre otro solución?
Gracias y un saludo