Aparte de las buenas respuestas dadas por otros sobre el compilability de sus métodos por sí mismos, no es la cuestión de la implementación de interfaces y métodos imperiosas de superclases.
La regla dice que puede sobrescribir/implementar un método, pero no puede declarar la excepción adicional a las declaradas por la firma del método original. Para entender esto, piensa en este ejemplo.
Digamos que usted está utilizando algún tipo de estructura de datos:
public abstract class AbstractBox {
public abstract void addItem(Item newItem);
public abstract void removeItem(Item oldItem);
}
Usted tiene su propia aplicación, pero decide declarar excepciones que no aparecen en la firma original:
public class MyBox extends AbstractBox {
public void addItem(Item newItem) throws ItemAlreadyPresentException {...}
public void removeItem(Item oldItem) throws NoSuchItemException {...}
}
Ahora consideremos este código genérico que maneja objetos de cuadro y recibe una instancia de MyBox:
public void boxHandler(AbstractBox box) {
Item item = new Item();
box.removeItem(item);
}
Quien haya escrito este código no esperaba ninguna excepción, ni tenía la intención de manejar el implementador o las excepciones. Para evitar esto, el compilador no le permitirá declarar excepciones adicionales a las de la firma original.
Por supuesto, si usted maneja excepciones internamente ... bueno, el compilador será más que feliz para permitir que usted deje caer excepciones declaradas desde su firma ;-)
Espero que esto ayude ...
Yuval = 8-)
Parece que se está refiriendo a ambos ejemplos como "methodA", que es algo confuso. – Stephan