Страницы

Поиск по вопросам

суббота, 8 февраля 2020 г.

Вопрос по static

#java #ооп


Объясните, пожалуйста, почему вот такой код компилируется

public class Solution{
    public static void main(String[] args){
        System.out.println(new KissMyShinyMetalAss());
    }

    public static class KissMyShinyMetalAss{
    }
}


А вот этот не компилируется

public class Solution{
    public static void main(String[] args){
        System.out.println(new KissMyShinyMetalAss());
    }

    public class KissMyShinyMetalAss{
    }
}


В одном случае внутренний класс объявлен как static в другом нет. Просто не могу
понять как в данном случае это влияет на компиляцию и почему не позволяет создать new
KissMyShinyMetalAss?
    


Ответы

Ответ 1



Не-static nested class подразумевает работу внутри экземпляра другого (внешнего) класса и при создании получает экземпляр этого класса через конструктор, что позволяет обращаться к нему через (в данном случае) Solution.this. Вот и вся причина - в статическом контексте nested class не может получить экземпляр внешнего класса.

Комментариев нет:

Отправить комментарий