Pourquoi est-il possible de définir des classes internes (alias non hiérarchique imbriqué) dans une interface?Classes imbriquées dans une interface
Cela a-t-il un sens? Ils ne peuvent exister au sein d'une instance de l'interface contenant, car les interfaces ne peuvent pas être instanciés, alors ...
Ce qui suit ne compile:
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;
}
}
}
Y at-il une différence entre les 2 ci-dessus des classes? Est-ce que static
est réellement pris en compte? Notez que si vous modifiez interface
avec class
, vous obtenez évidemment une erreur de compilation sur InnerClass
'static int a()
.
En outre, un coup d'oeil à l'adresse suivante:
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;
}
}
}
Contrairement lorsque la externe contenant l'entité est une classe, ici bien sûr il n'y a pas une telle chose comme un » intérieur (imbriqué non statique) class peut accéder aux champs de outer alors qu'une classe imbriquée statique ne peut pas ", car, étant donné que notre thingie externe est une interface, notre entier c
est implicitement statique ... Les classes imbriquées de interface
sont elles aussi implicitement statiques?
Donc, encore une fois, sont StaticNestedClass
et InnerClass
tout de même?
I ** pense ** classe 'InnerClass' est implicitement statique, de façon similaire à' C' – Cruncher
@Cruncher dans En fait, toute non-méthode dans une interface est marquée comme static par le compilateur automatiquement. –