Обзор
Недавно изучая Python и обнаружил, что Python поддерживает больше наследства, что напоминает мне об этом механизме, реализованном внутренним классом. Эта статья не о том, как добиться большего наследства через внутренний класс, а суммировать типы и методы использования внутреннего класса.
Внутренний класс Java разделен на:
Внутренний класс используется в исходном коде Android в больших количествах.
Далее представьте эти внутренние классы соответственно.
Нестатический внутренний класс
Когда класс является неэтиатическим членом другого класса, этот класс является нестатическим внутренним классом.
Пример кода создания нестатического внутреннего класса заключается в следующем:
класс outclass {class innerclass {}}
Когда мы собрали Javac, мы обнаружили, что были сгенерированы два файла. Class: outclass.class и outclass $ innerclass.class. Как показано на рисунке ниже:
Внутренние классы из нестатического метода внешнего класса
Легко получить доступ к внутреннему классу во внешнем классе. Пример кода заключается в следующем:
Общедоступный класс {Частный статический int a = 0; .makeinner ();} класс innerclass {public void SeeOUter () {System.out.println (a);Результаты следующие:
0
Внутренние классы из статического метода внешнего класса
Относительно проста доступа к внутреннему классу во внешнем классе.
Outclass.innerclass innerclass = new Outclass ().
Другими словами, нестатический внутренний класс должен сначала создаваться, а затем созданные внутренние классы используются через объекты внешнего класса. Пример кода заключается в следующем:
Общедоступный класс {частный статический int a = 0; .InnerClass innerClass = new Outclass ().
Результаты запустить:
01
Эта ссылка во внутреннем классе
Обычные классы могут ссылаться на текущие объекты с этим, а также внутренние классы. Но что, если внутренний класс хочет процитировать текущий объект внешнего класса? Вы можете использовать следующие способы:
Внешнее имя. Это
Пример кода заключается в следующем:
Общедоступный класс {частный статический int a = 0; .innerClass innerClass = new Outclass (). }}}
Статический внутренний класс
Нестатический внутренний класс представлен выше.
Статический внутренний класс -это роль статического элемента во внешнем классе.
Обратите внимание, что внешний класс не может быть изменен с помощью статического модификатора.
Пример кода заключается в следующем:
класс outclass {static class innerclass {}}
Скомпилируйте команду Javac, вы можете увидеть, что есть два файла. Класс, как показано на рисунке ниже:
Внутренние классы статических внутренних классов из нестатического метода внешнего класса
Посещение статических внутренних классов из внешних классов совпадает с неэтатическими внутренними классами во внешних категориях. Тем не менее, следует отметить, что в настоящее время статический внутренний класс может получить доступ только к статическим членам внешнего класса, а нестатические члены не могут быть доступны.
Пример кода заключается в следующем:
Общественный класс upclass {private int a = 0; OUTCLASS OCLASS = NEW OUTCLASS (); println (b);}}}
Результаты выполнения следующие:
Outclass $ innerclass@79a3400
Внутренняя классификация статических внутренних классов из внешнего статического метода
Уведомление:
Потому что статический внутренний класс является статическим членом внешнего класса, а статические элементы связаны с классом, а не с объектом создания объектов. Следовательно, внутренние классы в статическом методе внешнего класса не должны сначала создавать экземпляры внешнего класса.
Пример кода заключается в следующем:
Общественный класс upclass {private int a = 0; OUTCLASS OCLASS = NEW OUTCLASS (); это);
Анонимный внутренний класс
Анонимный внутренний класс - это наводнение в разработке приложений Android.
Анонимный внутренний класс может знать, что это внутренний класс, который не имеет категории, которая обычно используется для упрощения кода.
Я считаю, что студенты, которые пишут Java, используют потоки. Пример кода заключается в следующем:
Открытый класс outclass {public void testanonymousclass () {thread t = new Thread (new Runnable () {@Override public void run () {for (int i = 0; i <10; i ++) {System.out.println (i); Общественный статический статический void main (string [] args) {outclass oclas
Результаты выполнения следующие:
Другая ветка работает ...