内部 (静的ではないネストされた) クラスをインターフェイスに定義できるのはなぜですか?
意味はありますか?インターフェイスをインスタンス化できないため、それらを含むインターフェイスのインスタンス内に存在することはできません...
以下はコンパイルします:
interface MyInterface
{
static class StaticNestedClass
{
static int a()
{
return 0;
}
int b()
{
return 1;
}
}
class InnerClass
{
static int a()
{
return 0;
}
int b()
{
return 1;
}
}
}
上記の2つのクラスに違いはありますか?static実際に考慮されていますか?interfaceで変更すると、明らかに'classでコンパイル エラーが発生することに注意してください。InnerClassstatic int a()
さらに、以下をご覧ください。
interface MyInterface
{
int c=0;
static class StaticNestedClass
{
static int a()
{
return c;
}
int b()
{
return c+1;
}
}
class InnerClass
{
static int a()
{
return c;
}
int b()
{
return c+1;
}
}
}
外側の包含エンティティがクラスである場合とは異なり、ここではもちろん、「内側の (静的ではないネストされた) クラスは外側のフィールドにアクセスできるが、静的なネストされたクラスはアクセスできない」というようなことはありません。はインターフェイスであり、c整数は暗黙的に静的です...interfaceのネストされたクラスも暗黙的に静的ですか?
繰り返しになりますがStaticNestedClass、 とはInnerClassまったく同じですか?