これを
は個人的に
class Base {
}
interface Interface {
}
public class Test {
public static void main(String[] args) {
class Foo extends Base implements Interface {
};
Foo x = new Foo();
}
}
私は通常、静的な入れ子になったクラス自身にこれを引き出すだろうが、それはあなたの選択です:あなたが本当ににかかわらたい場合は、メソッド内の名前のクラスを作成することができますシナリオは私にはほとんど意味がありません。クラスBase
がこれですと仮定します:
class Base {
public void foo();
}
とInterface
はこれです:
interface Interface {
public void bar();
}
今、あなたはこのようになります匿名クラスを作成したい:
class MyClass extends Base implements Interface {
}
この理由はここにありますMyClass
がbar
からBase
に継承される(または場合によってはオーバーライドされる)ことを意味し、mエドfoo
からInterface
。これまでのところ、あなたのクラスはどちらの方法でもこの2つの方法を持っています。
Interface
が提供する機能、つまりメソッドfoo
を取得するだけで、メソッドのタイプがInterface
のオブジェクトを返すとどうなるか考えてみましょう。 bar
が失われています(アクセスできません)。これは2例に私たちをダウンさせます:あなたは新しいオブジェクトがInterface
と見られているので、そのメソッドを使用して取得していないためBase
を拡張
- は無用です。
Interface
も方法foo
を持っているが、それはあなただけの直接Base
を拡張することができるようにBase
自体は、Interface
を実装する必要があることを意味します:あまりにも存在する場合
class Base implements Interface {
public void foo();
public void bar();
}
class MyClass extends Base {
}
ジェネリックなものは悪夢になることがあり多くの抽象化。それを簡単に保つ;) –