Czy da się zrobić tak, abym mógł dziedziczyć z klasy wewnętrznej? A jeśli tak to jak? Bo poniższy kod niestety nie działa.
public class Test {
class Wewnetrzna {
}
}
class Test2 extends Test.Wewnetrzna{
}
Czy da się zrobić tak, abym mógł dziedziczyć z klasy wewnętrznej? A jeśli tak to jak? Bo poniższy kod niestety nie działa.
public class Test {
class Wewnetrzna {
}
}
class Test2 extends Test.Wewnetrzna{
}
Nie możesz tak zrobić, bo klasa Wewnetrzna
jest klasą niestatyczną, tzn ma implicite wskaźnik do klasy zewnętrznej Test
. Możesz natomiast dziedziczyć po klasach statycznych (wszystkie klasy niezagnieżdżone są statyczne):
class Zewnętrzna extends Main.Wewnętrzna {
}
public class Main {
static class Wewnętrzna {}
public static void main(String[] args) {
}
}
Rozumiem. Dziękuję za wyjaśnienie.
public class Main {
public static void main(String[] args) {
new C();
}
}
class A {
class B {
B() {
System.out.println("B constructed");
}
}
}
class C extends A.B {
C() {
new A().super();
System.out.println("C constructed");
}
}
Ciekawe:
public class Main {
public static void main(String[] args) {
new C(new A());
}
}
class A {
class B {
B() {
System.out.println("B constructed");
}
}
}
class C extends A.B {
C(A a) {
a.super();
System.out.println("C constructed");
}
}