Dlaczego niestatyczna klasa wewnętrzna nie może mieć statycznych elementów (pól i metod)? [duplikować]

Możliwy duplikat:
Dlaczego nie możemy mieć metody statycznej w klasie wewnętrznej?

Wiem, że utworzenie niestatycznego obiektu klasy wewnętrznej wymaga obiektu klasy zewnętrznej, a utworzony nie statyczny obiekt klasy wewnętrznej automatycznie ma ukryte odniesienie do obiektu klasy zewnętrznej. Ale dlaczego niestatyczna klasa wewnętrzna nie ma statycznych elementów? Projektant Java musi po prostu uniemożliwić dostęp do niestatycznych pól klasy zewnętrznej wewnątrz statycznej metody klasy wewnętrznej, byłoby to bardziej sensowne, nie?

Jeśli nie ma sensu posiadanie elementów statycznych w klasie wewnętrznej, dlaczego klasa wewnętrzna może dziedziczyć elementy statyczne, dziedzicząc klasę, która ma członków statycznych?

Przeczytałem tosłupek zbyt. Jak wspomniano:

Klasy wewnętrzne mogą dziedziczyć elementy statyczne, które nie są stałymi czasu kompilacji, nawet jeśli nie mogą ich deklarować. Klasy zagnieżdżone, które nie są klasami wewnętrznymi, mogą swobodnie deklarować elementy statyczne, zgodnie ze zwykłymi regułami języka programowania Java.

Czy to konwencja?

Oto mój kod:

public class OuterClass {

    private int outerClassField;

    public void doSomethingOuterClass() {
        outerClassField = 1;
    }

    public static void doSomethingStaticOuterClass() {
        // outerClassField = 2; // Error: Because static method cannot access an specific object's field
    }

    public class InnerClass extends ClassWithStaticField {

        // Error: Why a non-static inner class cannot have static fields ?
        // public static int innerClassStaticField = 1;

        public void doSomethingInnerClass() {
            outerClassField = 3;
            staticField = 1;
        }

        // Error: Why a non-static inner class cannot have static methods ?
        // public static void doSomethingStaticInnerClass() {
        // outerClassField = 4;
        // }
    }

    public static void main(final String[] args) {
        // If it does not make sense to have static members in an inner class, why inner class can inherit statis members by inheriting a class who has static
        // members?
        OuterClass.InnerClass.staticField = 1;
        OuterClass.InnerClass.staticMethod();
    }
}

class ClassWithStaticField {
    public static int staticField;

    public static void staticMethod() {
    };
}

questionAnswers(3)

yourAnswerToTheQuestion