Вы можете переопределить только закрытый класс в том же внешнем классе. например,
class a {
public String demofield;
private class democlass {
public demomethod() {
}
}
private class demosubclass extends democlass {
@Override
public demomethod() {
}
}
Использование private
предотвращает доступ к нему из любого другого класса.