序文
閉鎖は、作成された範囲からいくつかの情報を記録する呼び出し可能なオブジェクトです。この定義を通じて、内側のクラスが周辺クラスオブジェクト(内側クラスを作成する範囲)に関する情報が含まれているだけでなく、周辺クラスオブジェクトへの参照も含まれているため、オブジェクト指向の閉鎖であることがわかります。この役割において、内部クラスには、個人のメンバーを含むすべてのメンバーを運営する権利があります。
Javaで最も物議を醸す問題の1つは、Javaがコールバックを可能にするためのポインターのようなメカニズムを含めるべきであると考えられていることです。コールバックを介して、オブジェクトは、後のポイントで最初のオブジェクトを呼び出すことができる情報をいくつか伝えることができます。コールバックがポインターを介して実装されている場合、プログラマがポインターを誤用しないことを願っています。
1。メンバーの内部クラス
内部クラスはメンバーと見なすことができます。メンバーインナークラスは、外部クラスのすべてのメンバープロパティとメンバー方法を無条件にアクセスできます。
class Outterclass {//外部クラスPrivate int in = 0; static int inn = 4; Public Outterclass(int in){this.in = in; } class innerclass {//内部クラスpublic void output(){system.out.println(in); System.out.println(inn); }}}メンバー内部クラスが外部クラスと同じ名前のメンバー変数またはメソッドを所有する場合、メンバー内部クラスのメンバーがデフォルトでアクセスされます。外部クラスの同じ名前のメンバーにアクセスする場合は、次の形式でアクセスする必要があります。
Outterclass(外部クラス)。このメンバー
外部クラスが内部クラスにアクセスする場合、最初にメンバー内部クラスのオブジェクトを作成し、次にこのオブジェクトへの参照を介してアクセスする必要があります。
クラスOutterclass {private int in = 0; static int inn = 4; public Outterclass(int in){innerclass inenter = new innerclass(); this.in = inner.innernum; } class 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(){utterclass oc = new Outterclass(3); outterclass.innerclass in = oc.new innerclass(); }} 2。ローカル内部カテゴリ
ローカルインナークラスは、メソッドのローカル変数のようなものであり、 public 、 protected 、 private 、およびstatic修飾子を持つことはできません。
class Outterclass {public Outterclass(int in){class innerclass {//ローカルインナークラスint innernum = 1; }}} 3。ネストされた内部クラス
ネストされた内部クラスは、 staticとして変更された内部クラスです。 staticとして宣言された内部クラスでは、内部クラスオブジェクトと外部クラスオブジェクトとの間の接続は必要ありません。つまり、 outer.innerを直接参照できます。つまり、外側クラスまたは内部クラスを作成する必要はありません。
class Outterclass {public Outterclass(int in){} static class 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と同じメソッド名がありますが、その意味は完全に異なります。現時点では、閉鎖が必要です。
クラスライター{//ライターベースクラスvoid work(){};}インターフェイスプログラマ{//プログラマーインターフェイスvoid work();}閉鎖実装コードは次のとおりです。
public class writerprogrammer拡張作家{@override public void work(){// writing} public void code(){// write code} class programmerinner {@override public void work(){code(); }}}サブクラスでは、プログラマーのインターフェイスルールに従う内部クラスが定義され、内部クラスはプログラマーのwork()メソッドコールバックcode()メソッドを実装し、サブクラスの親クラスライターのwork()メソッドを直接実装します。
6.内部カテゴリの役割
内部クラスは、隠すために十分に実装できます。
一般的に、非内部クラスはprivateおよびprotected権限を許可しませんが、内部クラスは
内部クラスは、周辺クラスのすべての要素にアクセスできます
しかし、複数の継承が達成されます
インターフェイスの変更と、同じクラスで同じ名前の2つのメソッドの呼び出しの実装を避けることができます。
7。概要
上記は、この記事のコンテンツ全体です。誰もがJavaを学んだり使用したりするのに役立つことを願っています。ご質問がある場合は、メッセージを残してコミュニケーションをとることができます。