Предисловие
Закрытие - это вызываемый объект, который записывает некоторую информацию из прицела, в которой он был создан. Благодаря этому определению видно, что внутренний класс является объектно-ориентированным закрытием, поскольку он не только содержит информацию о объекте периферического класса (область создания внутреннего класса), но также автоматически имеет ссылку на объект периферического класса. В этой роли внутренний класс имеет право управлять всеми участниками, включая частных членов.
Одна из самых противоречивых проблем в Java заключается в том, что считается, что Java должна включать в себя какой-то указатель механизм, чтобы разрешить обратные вызовы. Благодаря обратному обращению, объект может содержать некоторую информацию, которая позволяет ему вызвать начальный объект в некоторой более поздней точке. Если обратный вызов реализован через указатель, то вы можете только надеяться, что программист не будет злоупотреблять указателем.
1. Внутренний класс членов
Внутренний класс может рассматриваться как участник. Член внутреннего класса может безоговорочно получить доступ к всем свойствам члена и методам внешних классов.
класс OutterClass {// Внешний класс private int in in = 0; статический int inn = 4; public outterclass (int in) {this.in = in; } класс innerclass {// внутренний класс public void output () {System.out.println (in); System.out.println (Inn); }}}Когда внутренний класс участника владеет переменной -членом или методом с тем же именем, что и внешнее класс, члены внутреннего класса члена доступны по умолчанию. Если вы хотите получить доступ к члену с тем же именем внешнего класса, вам необходимо получить к нему доступ в следующей форме:
OutterClass (внешний класс). Это. Мерман
Когда внешний класс получает доступ к внутреннему классу, сначала необходимо создать объект внутреннего класса участника, а затем получить к нему обратиться через ссылку на этот объект.
Class OutterClass {private int in = 0; статический int inn = 4; public outterclass (int in) {innerclass inner = new InnerClass (); this.in = inner.innernum; } класс innerclass {// внутренний класс public int innernum = 1; public void output () {System.out.println (in); System.out.println (Inn); int a = outterclass.this.inn; }}}Внутренние классы участников существуют на основе внешних классов, то есть, если вы хотите создать объект внутреннего класса участника, предпосылка заключается в том, что должен существовать объект внешнего класса. Общий способ создания объекта внутреннего класса участника заключается в следующем:
открытый класс класс {public static void main () {OutterClass oc = new OutterClass (3); OutterClass.innerClass in = oc.new innerclass (); }} 2. Местные внутренние категории
Местный внутренний класс похож на локальную переменную в методе и не может иметь public , protected , private и static модификаторов.
класс OutterClass {public OutterClass (int in) {class innerClass {// локальный внутренний класс int innernum = 1; }}} 3. Вложенные внутренние классы
Вложенные внутренние классы являются внутренними классами, измененными как static . Внутренний класс, объявленный как static не требует соединения между объектом внутреннего класса и объектом внешнего класса, то есть мы можем напрямую ссылаться на outer.inner , то есть нам не нужно создавать внешний класс или внутренний класс.
класс OutterClass {public OutterClass (int in) {} статический класс InnerClass {// локальный внутренний класс int innernum = 1; }} public class class {public static void main () {OutterClass.innerClass in = new OutterClass.innerClass (); }} 4. Анонимная внутренняя категория
Анонимные внутренние классы - это те, которые мы используем больше всего, потому что мы не хотим давать им имена, поэтому у нас есть анонимность. Анонимные внутренние классы должны быть определены заранее.
btnsan.setonClickListener (NewOnClickListener () {@Override publicVoidonClick (view v) {}}); 5. Закрытие и обратные вызовы
Закрытие - это объект, который может быть вызван, который сохраняет информацию о сфере применения, которая его создает. Java не может явно поддерживать закрытие, но в Java закрытия могут быть реализованы через «интерфейс + внутренний класс».
Например: интерфейс -программист и писатель базового класса имеют одинаковую work метода и одно и то же имя метода, но его значение совершенно другое. В настоящее время требуется закрытие.
класс Writer {// Base Base Class void work () {};} Интерфейс Programmer {// Интерфейс Programmer void work ();} Код реализации закрытия следующим образом:
public Class writerprogrammer extends writer {@override public void work () {// witch} public void code () {// write code} class programherinner реализует Programmer {@Override public void work () {code (); }}} В подклассе определяется внутренний класс, который следует за правилами интерфейса программиста, а затем внутренний класс реализует метод Callback code() work() метод программиста () и непосредственно реализует метод work() писателя родительского класса в подклассе.
6. Роль внутренних категорий
Внутренние классы могут быть хорошо реализованы, чтобы скрыть.
Как правило, не межтегими классы не разрешают private и protected разрешения, но внутренние классы могут
Внутренний класс имеет доступ ко всем элементам периферийного класса
Но множественное наследство достигается
Он может избежать изменения интерфейса и реализации вызовов двух методов одного имени в одном классе.
7. Резюме
Вышеуказанное - все содержание этой статьи. Я надеюсь, что это поможет всем, кто изучает или использует Java. Если у вас есть какие -либо вопросы, вы можете оставить сообщение для общения.