Java進級の内部クラス

3052 ワード

Java進級の内部クラス
Java進級の内部クラス
Javaでは、あるクラスを別のクラスまたはメソッドに定義できます.このようなクラスを内部クラスと呼びます.
メンバーの内部クラス
  • 別のクラスの内部に定義されている
  • メンバーの内部クラスと外部クラスが同じ名前のメンバー変数またはメソッドを持っている場合、非表示の現象が発生します.内部クラスでは、デフォルトではメンバーの内部クラスのメンバーにアクセスします.外部クラスの同じ名前の変数またはメソッドにアクセスする必要がある場合は、(外部クラス.this.メンバー変数/メンバーメソッド)
  • を使用する必要があります.
  • 内部クラスでは無条件に外部クラスにアクセスできますが、外部クラスが内部クラスのメンバーにアクセスするには、内部クラスのオブジェクトを作成する必要があります.
  • 内部クラスはprivate、protected、publicアクセス権、およびパケットアクセス権
  • を有する.
    ローカル内部クラス
  • ローカル内部クラスは1つのメソッドまたは1つの役割ドメイン内に定義されている.彼とメンバー内部クラスの違いは、ローカル内部クラスのアクセス権限がメソッド内に限られているか、またはこの設定された役割ドメイン内の
  • である.
  • ローカル内部クラスはローカル変数のように修飾子
  • を持つことはできない.
    匿名の内部クラス
  • 匿名内部クラスは、コンストラクタがない唯一のクラスであり、コンストラクタがないため、匿名内部クラスの範囲はかなり限られている
  • である.
  • 一般的に、匿名の内部クラスは、他のクラスまたは実装インタフェースを継承するために使用され、特別な方法
  • を追加する必要はない.
    静的内部クラス
  • 静的内部クラス外部クラスを必要としない
  • 静的内部クラスは、ロード時にグローバルに1回だけ
  • をロードする.
  • 、例えば駆動負荷
  •     {
            try{
                Class.forName("com.mysql.jdbc.Driver");
            }catch(ClassNotFoundException e){
                e.printStackTrace();
            }
        }

     
    内部クラスを使用するメリット
  • 各内部クラスは、1つのインタフェースの実装
  • を独立に継承することができる.
  • は、一定の論理関係を持つクラスを一緒に配置するのに便利であると同時に、
  • を外部に隠す.
  • イベントドライバを記述する、例えばmysqlドライバ
  • を上にロードする.
  • スレッドコード
  • を記述する
        public class A {
            public String nameOut;
            public String testOut(){
                InnerClass ic = new InnerClass();
                ic.testInner();
                return "s";
            }
            private class InnerClass{
                public String name;
                public void testInner(){
                }
            }
    
            public static void main(String[] args) {
                InnerClass ic = new A().new InnerClass();//InnerClass
                ic.testInner();
            }
        }