Java - dziedziczenie z klasy wewnętrznej.

0

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{
	
}
1

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) {
    
  }
}
0

Rozumiem. Dziękuję za wyjaśnienie.

1
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");
    }
}
0

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");
  }
}

1 użytkowników online, w tym zalogowanych: 0, gości: 1