Здравствуйте, PsyH0z, Вы писали:
PH>Возник вопрос: для чего может понадобиться такое наследование?
не знаю, может для вопроса на тестировании.
Кстати, наследование не обязательно
public class TestLoop {
private static class A {
public A() {
B b = new B();
}
}
private static class B {
public B() {
A a = new A();
}
}
public static void main(String[] args) {
new B();
}
}
ну это понятно
Я не про то.
Просто раз сановцы оставили такую возможность наследования, значит она нужна зачем-то... у них нет возможности спросить, вот я и решил здесь.
Сам я, кроме как в случае если внутренний класс будет статический, вообще не могу придумать способов это использовать
L>Здравствуйте, PsyH0z, Вы писали:
PH>>Возник вопрос: для чего может понадобиться такое наследование? L>не знаю, может для вопроса на тестировании.
L>Кстати, наследование не обязательно
L>
L>public class TestLoop {
L> private static class A {
L> public A() {
L> B b = new B();
L> }
L> }
L> private static class B {
L> public B() {
L> A a = new A();
L> }
L> }
L> public static void main(String[] args) {
L> new B();
L> }
L>}
L>
Здравствуйте, PsyH0z, Вы писали:
PH>Здравствуйте, Lucker, Вы писали:
PH>ну это понятно PH>Я не про то. PH>Просто раз сановцы оставили такую возможность наследования, значит она нужна зачем-то... у них нет возможности спросить, вот я и решил здесь. PH>Сам я, кроме как в случае если внутренний класс будет статический, вообще не могу придумать способов это использовать
А почему бы и нет? Это вроде никак не нарушает концепцию языка и поведение классов вполне предсказуемое.
Здравствуйте, PsyH0z, Вы писали:
PH>Возник вопрос: для чего может понадобиться такое наследование?
PH>
PH>public class Outer {
PH> class Inner extends Outer{
PH> }
PH> Outer(){
PH> Inner i = new Inner();
PH> }
PH>}
PH>
Ну я где-то видел такую контрукцию (не знаю, насколько это правильно). Было примерно так:
public abstract class Dummy {
public abstract void someMethod();
public static Dummy getDummy() {
return new DummyImpl1(); //Или DummyImpl2 в зависимости от логики...
}
class DummyImpl1 extends Dummy {
public void someMethod() { }
}
class DummyImpl2 extends Dummy {
public void someMethod() { }
}
}
То есть грубо говоря импелементация абстрактного класса была сделана в inner классах, которые были extended от outer...
Re: Зачем Inner может наследовать Outer?
От:
Аноним
Дата:
25.11.04 13:02
Оценка:
Так не создавай Inner в конструкторе Outer, а используй как-нибудь еще и будет тебе счастье вместо StackOverflow
Здравствуйте, Tony2k, Вы писали:
T>Ну я где-то видел такую контрукцию (не знаю, насколько это правильно). Было примерно так:
T>
T>public abstract class Dummy {
T> public abstract void someMethod();
T> public static Dummy getDummy() {
T> return new DummyImpl1(); //Или DummyImpl2 в зависимости от логики...
T> }
T> class DummyImpl1 extends Dummy {
T> public void someMethod() { }
T> }
T> class DummyImpl2 extends Dummy {
T> public void someMethod() { }
T> }
T>}
T>
Врядли такую. Компилировать пробовал? Нет? Скажет что-то там про невозожность доступа к this из статичсого контекста.
надо перед class DummyImpl1 extends Dummy и class DummyImpl2 extends Dummy static ставить.
T>То есть грубо говоря импелементация абстрактного класса была сделана в inner классах, которые были extended от outer...
не в inner а в nested