42_JAVA Study 05


第5週部品


1.抽象クラス

#추상메서드(abstract method) #추상클래스(abstract class) #추상클래스를 사용하는 이유? #훅(Hook)메서드 #추상 클래스와 템플릿 메서드 패턴 #final 예약어는 언제 사용하는가?

抽象メソッド


サブクラスを上書きしないと使用できないメソッドを示します
宣言のみ→インプリメンテーションを作成しない→サブクラスで未作成のインプリメンテーションを使用
→抽象メソッドを含むクラスを継承するサブクラスが抽象メソッドを実装しなければならないことを確認する
ex)モジュールなどの重複部分や共通部分(モジュールなど)は予め作成されたものを使用し、受信と使用部分は自分の必要な部分だけを再定義し、作成と導入の効率を向上させる
abstract 반환타입 메소드이름();
宣言の終了時に直ちにセミコロン(;)追加

抽象クラス


1つ以上の抽象メソッドを含むクラスを抽象クラスと呼ぶ
抽象クラスでは、オブジェクト向けのプログラミングにおいて重要な特徴、すなわちマルチフォーム化を持つメソッドのセットを定義できます.
つまり、使用するメソッドを抽象クラスの抽象メソッドとして宣言すると、そのクラスを継承するすべてのクラスがこの抽象メソッドを再定義する必要があります.
abstract class 클래스이름 {
    ...
    abstract 반환타입 메소드이름();
    ...
}
抽象クラスには未定義のアクションの抽象メソッドが含まれているため、インスタンスを作成できません.
抽象クラスは、サブクラスのインスタンスを生成する前に、作成したサブクラスで抽象クラスのすべての抽象メソッドを上書きする前に、継承によってサブクラスを作成する必要があります.
☝抽象クラスは一般クラスのすべての点と同じですが、抽象メソッドは含まれません.
すなわち、作成者、フィールド、および一般的なメソッドも含めることができる.

抽象クラスを使用する理由


サブクラスで抽象メソッドを強制するために
継承されたサブクラスでは、メソッドが上書きされずに完全に実装されていると考えられる可能性があります.
(抽象クラスを使用してオブジェクトを作成するには、サブクラスを作成し、抽象メソッドを上書きする必要があります)
これは、抽象クラスを使用してメンテナンス性を向上させ、必要なオブジェクトを最小限の変更で使用できるようにすることで、メンテナンス性を向上させるためです.

テンプレートメソッドアレイ


タスクの処理の一部をサブクラスにカプセル化し、タスク全体を実行する構造を変更せずに特定のステップで実行された履歴のモードを変更します.
  • は、同じ部分の異なる構文からなる方法のコード冗長性を最大限に低減するのに役立つ
  • 異なる観点から、同じ機能は親クラスで定義され、拡張/変更が必要な部分だけが子クラスで実現できるようにします.
    例えば、全体アルゴリズムは親クラスで実施することができ、他の部分はサブクラスで実施することができ、これは全体アルゴリズムコードの再使用に有用である.
    -メリット
    コードの重複を減らす
    サブクラスのパーティション化を削減し、コアロジック管理を簡素化
    簡単にオブジェクトの追加と展開
    -欠点
    抽象的な方法が多ければ多いほど、クラス管理は複雑になります.
    「削除」クラスと「実装」クラスの複雑さが増す

    構造の説明



    AbstractClass
  • テンプレートメソッドを定義するクラス
  • サブクラスで汎用アルゴリズムを定義し、サブクラスで実現される機能を元のメソッドまたはhookメソッドのクラス
  • として定義する
    ConcreteClass
  • クラス継承を実装する元のメソッドまたはhookメソッド
  • 親クラスで実装されるテンプレートメソッドの従来のアルゴリズムでは、サブクラスの元のメソッドまたはhookメソッドのクラス
  • が上書きされる.
    hookメソッド
  • オプションの上書き方法
  • final予約語はいつ使いますか?


    Wikipediaで説明されているfinal(Java)の定義と例は次のとおりです.
    the final keyword is used in several contexts to define an entity that can only be assigned once.
    finalキーワードはエンティティを一度だけ割り当てます.これは、複数回の割り当てを試みるとコンパイルエラーが発生するため、検証が可能であることを意味します.
    97 Javaのfinalは、可変/読み取り専用属性を宣言するコマンドです.
    **クラス、関数、変数を変更したくない場合はfinalと宣言します.**
    サムネイル:oneook