Почему внешние классы не являются статическими в java?
В java внешний класс может быть общедоступным, окончательным, дефолтным или абстрактным.
Почему не Static как
public static class MyClass{}
Ответ 1
Внешний класс уже неявно статичен.
Нестатический вложенный класс (= внутренний класс) означает, что внутренний класс неявно имеет ссылку на его родительский класс.
Вот почему для вложенного класса вы можете различать статические и нестатические. Это не имеет смысла для внешних классов.
Вот пример, чтобы понять разницу между статическим/нестатическим вложенным классом. Вы должны понять, почему это не имеет смысла во внешнем классе.
public class MyClass {
private String anAttributeOfMyClass;
private /*static*/ class MyInnerClass {
public void foo() {
/*
* Here, I can access the attribute of the parent class
* because I implicitly have a reference to it.
* Try to make the nested class static an see the difference.
*/
anAttributeOfMyClass.trim();
}
}
}