В Java могут ли внутренние классы наследовать от абстрактного класса, определенного вне внешнего класса внутреннего класса? - PullRequest
2 голосов
/ 09 мая 2011

В Java внутренние классы могут наследовать от абстрактного класса, определенного вне внешнего класса внутреннего класса?

Также могут ли абстрактные классы реализовывать конструкторы?

Ответы [ 2 ]

9 голосов
/ 09 мая 2011

Да, обоим.

Например, весьма распространено расширение классов адаптера слушателя Swing во внутренних классах

Почему ты просто не попробовал?

0 голосов
/ 09 мая 2011

Вы имеете в виду ...

abstract public class Outer { 
 public Outer() { System.out.println("Outer.ctor"); }
 abstract public String foo(); 
}

public class Inner {
  public static class Inner2 extends Outer {
    public Inner2() { super(); }
    public String foo() { return "Inner2.foo";}
  }

  public static void main(String[] args) {
    System.out.println("main: " + new Inner2().foo());
  }
}

...?

$ javac -d .  Outer.java Inner.java

$ java -cp . Inner
Outer.ctor
main: Inner2.foo

(лишние вызовы super () просто иллюстративны и не нужны.)

...