Javaの高度な匿名内部クラス、アクセス修飾子、パッケージ


1.仮パラメーターと戻り値

  • (1)仮パラメーター:
    クラス名:このクラスのオブジェクトが必要です
    抽象クラス名:このクラスのサブクラスオブジェクトが必要です
    インターフェース名:このインターフェースの実装クラスオブジェクトが必要です。

  • (2)戻り値の型:
    クラス名:返されるものはこのクラスのオブジェクトです
    抽象クラス名:返されるものはこのクラスのサブクラスオブジェクトです
    インターフェース名:返されるものはこのインターフェースの実装クラスのオブジェクトです。

  • (3)チェーンプログラミング
    オブジェクトメソッド1()メソッド2()...メソッドn();

    この使用法:実際には、メソッド1()が呼び出された後にオブジェクトが存在し、
    メソッド2()が呼び出された後にオブジェクトが返されます。
    メソッドn()が呼び出された後、オブジェクトである場合とそうでない場合があります。

コードデモ

class Link{
    
    
    public String Test(){
    
    
        return "helloworld";
    }
}
public class LinkCodeTest {
    
    
    public static void main(String[] args) {
    
    
        Link link=new Link();
        System.out.println(link.Test().length());
      
    }
}

ここに画像の説明を挿入

2、パッケージ

1パッケージ

  • (1)実際にはフォルダです

  • (2)機能:

    • A:同じ名前のクラスを区別する
    • B:クラスの分類管理
      • a:機能による
      • b:モジュールによると
  • (3)パッケージ定義
    パッケージpackage name;

      多级包用.分开。
    
  • (4)注意が必要な事項:

    • A:パッケージステートメントは、ファイル内の最初の有効なステートメントである必要があります
    • B:Javaファイルに含めることができるパッケージは1つだけです
    • C:パッケージがない場合、デフォルトはパッケージ名なしです。
  • (5)パッケージ
    Aでコンパイルして実行:手動タイプ
    B:自動タイプ
    javac -d。HelloWorld.java

2.ガイドパッケージ

  • (1)パッケージ化されたクラスを何度も使用しており、非常に面倒ですが、現時点ではJavaがキーワードインポートを提供しています。
  • (2)形式:
    インポートパッケージ名...クラス名;
    別:
    インポートパッケージ名... *;(非推奨)
  • (3)パッケージ、インポート、クラス
    パッケージ>インポート>クラスの順序

次の2つの書き方は問題ありませんが、最初の書き方をお勧めします

import java.util.Collection;
import java.util.HashMap;
import java.util.Map;
import java.util.Set;
import java.util.*;

3、許可修飾子

1.許可修飾子:

ここに画像の説明を挿入
注:常に表示できるのは、これら4つの許可修飾子のうち1つだけです。

2.共通の許可修飾子

  • (1)分類:

    • 許可修飾子:プライベート、デフォルト、保護、パブリック
    • ステータス修飾子:静的、最終
    • 抽象修飾子:抽象
  • (2)一般的なクラスとその構成の変更

    • クラス:
      デフォルト、パブリック、ファイナル、アブストラクト

        常用的:public
      
    • メンバー変数:
      private、default、protected、public、static、final

        常用的:private
      
    • 構築方法:
      プライベート、デフォルト、保護、パブリック

        常用的:public
      
    • メンバーメソッド:
      private、default、protected、public、static、final、abstract

        常用的:public
      
  • (3)他のより一般的なもの:

    public static final int X = 10;
    public static void show(){}
    public final void show(){}
    public abstract void show();

  • 注:インターフェースのメソッドのデフォルト修飾子はpublic abstractで、定数はpublic static finalです。
    定義できるのは定数のみですが、変数は定義できません。定義するときに値を割り当てます。

interface Inter<T>{
    
    
   public static final int a=0;
    void sum(T a);
}

4、内部カテゴリ

  • (1)クラスが別のクラスの内部で定義されている場合、そのクラスは内部クラスと呼ばれます。

       举例:把类B定义在类A中,类B就被称为内部类。
    
  • (2)内部クラスのアクセスルール

      A:可以直接访问外部类的成员,包括私有
      B:外部类要想访问内部类成员,必须创建对象
    
  • (3)内部クラスの分類

      A:成员内部类
      B:局部内部类
    
  • (4)メンバーの内部クラス

      A:private 为了数据的安全性
      B:static 为了访问的方便性
      
      成员内部类不是静态的:
      	外部类名.内部类名 对象名 = new 外部类名.new 内部类名();
      成员内部类是静态的:
      	外部类名.内部类名 对象名 = new 外部类名.内部类名();
    
  • (5)メンバーの内部クラスの
    インタビューの質問には、30、20、10のコード出力が必要です

class Outer {
    
    
			public int num = 10;
			
			class Inner {
    
    
				public int num = 20;
				
				public viod show() {
    
    
					int num  = 30;
					
					System.out.println(num);
					System.out.println(this.num);
					System.out.println(Outer.this.num);
				}
			}
		}
  • (6)ローカル内部クラス

    • A:ローカル内部クラスは、ローカル変数にアクセスするための最終的な変更を追加する必要があります。
      B:なぜですか?
      ローカル変数は使用後に消えますが、ヒープメモリ内のデータはすぐには消えません。
      したがって、変数は引き続きヒープメモリで使用され、変更の量は失われます。
      値がまだ存在するようにするには、最終的な変更を追加します。
      逆コンパイルツールを通じて、finalを追加した後、ヒープメモリが変数名ではなく値を直接格納することがわかりました。
  • (7)匿名内部クラス

    • A:ローカル内部クラスの簡略化された形式です
    • B:前提
      クラスまたはインターフェースがある
    • C:形式:
      新しいクラス名またはインターフェース名(){ rewriteメソッド; }

    • D:エッセンス:
      実際、クラスを継承するか、インターフェースを実装するのは、サブクラスの匿名オブジェクトです。
  • (8)開発における匿名の内部クラスの使用開発時
    に、抽象クラスまたはインターフェースをパラメーターとして認識します。
    現時点では、実際に必要なのはサブクラスオブジェクトであることがわかっています。
    メソッドが1回だけ呼び出される場合は、匿名の内部クラスの形式を単純化できます。

      interface Person {
      	public abstract void study();
      }
      
      class PersonDemo {
      	public void method(Person p) {
      		p.study();
      	}
      }
      
      class PersonTest {
      	public static void main(String[] args) {
      		PersonDemo pd = new PersonDemo();
      		pd.method(new Person() {
      			public void study() {
      				System.out.println("好好学习,天天向上");
      			}
      		});
      	}
      }
    
  • (9)匿名の内部インタビューの質問

interface Inter {
    
    
			void show();
		}
		
		class Outer {
    
    
			//补齐代码
			public static Inter method() {
    
    
				return new Inter() {
    
    
					public void show() {
    
    
						System.out.println("HelloWorld");
					}	
				};
			}
		}
		
		class OuterDemo {
    
    
			public static void main(String[] args) {
    
    
				Outer.method().show(); //"HelloWorld"
			}
		}

Java入門基礎学習(1)
Java入門基礎学習(2)
Java入門基礎学習(3)
Java入門基礎学習(4)
Java入門基礎学習(5)
Java入門基礎学習(6)
Java入門基礎学習(7)
java入門基本的な学習(8)
共通の高度なJavaのオブジェクトの(1)
一般的には高度のJavaのオブジェクト(2)
のソートバブル
のJavaの詳細Javaの選択およびソート
高度なJavaの高度なオブジェクト指向(パッケージ)の
Javaの詳細オブジェクト指向(コードブロック、継承)
Javaの高度なオブジェクト指向(ポリモーフィズム、抽象化、インターフェイス)

おすすめ

転載: blog.csdn.net/qq_45798550/article/details/108179468