Можно ли переопределять внутренние классы?

В начале нужно четко понять что же мы хотим сделать. Логика следующая:[
1)Есть некий класс A;
2)Есть некий класс B, внутренний для класса A;
3)Мы хотим создать класс C, наследующийся от класса А и ещё раз описать в классе С класс В.

public class InnerOver {

    public InnerOver() {
        System.out.println("Конструктор в InnerOver");
        new InnClass();
    }

    protected class InnClass{
        public InnClass() {
            System.out.println("Внутренний класс в InnerOver");
        }
    }
}
    public class TestInnerOver extends InnerOver {
        public TestInnerOver() {
            System.out.println("Конструктор TestInnerClass");
        }

        public class InnClass{
            public InnClass() {
                System.out.println("Внутренний переопределённый класс в TestInnerOver");
            }
        }

        public static void main(String[] args) {
            new TestInnerOver();
            System.out.println("========================");
            // Для создания "переопределённого" внутреннего класса пользуемся экземпляром потомка
            new TestInnerOver().new InnClass();
            System.out.println("========================");

            // Для создания внутреннего класса из родителя вызываем его через создание экземпляра супер-класса
            new InnerOver().new InnClass();
            System.out.println("========================");
        }
}
Вывод:
Конструктор в InnerOver
Внутренний класс в InnerOver
Конструктор TestInnerClass
========================
Конструктор в InnerOver
Внутренний класс в InnerOver
Конструктор TestInnerClass
Внутренний переопределённый класс в TestInnerOver
========================
Конструктор в InnerOver
Внутренний класс в InnerOver
Внутренний класс в InnerOver
========================

 

Из примера видно что повторное описание внутреннего класса — это не более чем работа с пространством имён. Итог — внутренний класс, подобно методам, переопределить нельзя.

Понравилась статья? Поделиться с друзьями:

Комментарии:

Добавить комментарий

;-) :| :x :twisted: :smile: :shock: :sad: :roll: :razz: :oops: :o :mrgreen: :lol: :idea: :grin: :evil: :cry: :cool: :arrow: :???: :?: :!: