内部 (静的ではないネストされた) クラスをインターフェイスに定義できるのはなぜですか?
意味はありますか?インターフェイスをインスタンス化できないため、それらを含むインターフェイスのインスタンス内に存在することはできません...
以下はコンパイルします:
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
でコンパイル エラーが発生することに注意してください。InnerClass
static 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
まったく同じですか?