разница между расширяет внутренний класс и расширяет вложенный класс?

class OuterClass
{
    static class InnerClassOne
    {
        //Class as a static member
    }

    class InnerClassTwo
    {
        //Class as a non-static member
    }
}


class AnotherClassOne extends OuterClass.InnerClassOne
{

}


class AnotherClassTwo extends OuterClass.InnerClassTwo
{
    public AnotherClassTwo()
    {
        new OuterClass().super();  //accessing super class constructor through OuterClass instance
    }
}

у меня есть эти классы, почему, когда мы расширяемся из вложенного класса, мы не вызываем конструктор внешнего класса, но когда расширяемся из внутреннего класса, мы должны вызывать внешний конструктор через внешний объект, так в чем же разница и почему??


person Android AL-Khatib    schedule 18.10.2016    source источник
comment
Короче говоря, один из них статичен, как готовый к употреблению, а другой нестатичен, для его использования нужно немного приготовить, прочитать о статическом, а затем о внутреннем статическом классе, это будет совершенно ясно и прочитано stackoverflow.com/questions/70324/   -  person Pavneet_Singh    schedule 18.10.2016


Ответы (1)


Причина проста. Чтобы получить доступ к свойству static, вам не нужно создавать объект, т. е. вам не нужно создавать экземпляр класса.

Но если вы хотите получить доступ к нестатическому свойству, вам сначала нужно создать объект этого класса, а затем использовать его.

Итак, здесь, в вашем случае, когда вы хотите расширить InnerClassTwo (который является внутренним классом и не статическим), вам придется связать его с конструктором внешнего класса AnotherClassTwo, поскольку его можно рассматривать как свойство этого внешнего класса.

person Pritam Banerjee    schedule 18.10.2016