Я читал о классе Inner в Learning Java. Я нашел этот кодВнутренний класс в Java
class Animal{
class Brain{
}
}
После компиляции, javap 'Animal$Brain'
дает выход в
Compiled from "Animal.java"class
Animal$Brain {
final Animal this$0;
Animal$Brain(Animal);
}
, который объясняет, как внутренний класс получает ссылку на его охватывающий экземпляр в конструкторе внутреннего класса. Но когда я определить внутренний класс как частные, как этот
class Animal{
private class Brain{
}
}
затем после компиляции, javap 'Animal$Brain'
дает результат, как
Compiled from "Animal.java"
class Animal$Brain {
final Animal this$0;
}
Так почему же выход отличается? Почему внутренний конструктор классов не показан? В последнем случае внутренний класс получает ссылку на экземпляр класса.
Я думаю, это потому, что открытый конструктор класса исчез (вы не можете сделать 'нового животного() новый мозг();.' Теперь внешне). – Rogue