Вот что вы, похоже, описываете:
class C {}
class A extends C {
static class B {}
}
Наличие вложенного класса в A
не делает B
подклассом C
. Доступ к членам не является определяющим признаком того, чтобы быть подклассом.
Предположим, вы пытаетесь присвоить объект типа B
переменной типа C
.
C c1 = new A(); // OK -- A is a subclass of C
C c2 = new A.B(); // Not OK
ЕслиB
были подклассом C
, последний будет правовым заданием. Но это не так.