import java.io.IOException; public class ExceptionsAndInheritance { private static abstract class Base { public abstract void abstractChecked() throws IOException; public abstract void abstractUnchecked(); public void concreteChecked() throws IOException { throw new IOException(); } public void concreteUnchecked() throws IllegalArgumentException { } } public static class ChildWithNoExceptions extends Base { public void abstractChecked() {} public void abstractUnchecked() throws IllegalArgumentException {} } public static class ChildWithSpecializedExceptions extends Base { public void abstractChecked() throws java.io.FileNotFoundException { throw new java.io.FileNotFoundException(); } public void abstractUnchecked() {} } }