[Java] Abstraction


Abstract Class


エンティティークラスの設計仕様

抽象化

  • オブジェクトのプロパティと機能では、削除する必要がなく、保持することが重要です.
    あるいは、オブジェクト間の共通属性
  • が抽出される.

    抽象クラス

  • エンティティークラスの共通特性を抽出して宣言するクラス
  • エンティティークラスを作成する親としてのみ使用されます(オブジェクト/不完全なクラスではありません)
  • 拡張(extends)
  • のみ
  • は、1つまたは複数の抽象的方法
  • を有する.
    定義
  • フィールドおよびメソッド
  • 抽象メソッド

  • は実施できず、
  • のみを宣言する.
  • 抽象クラスを継承するエンティティサブクラスは、抽象メソッド
  • を実装する必要があります.
  • 抽象メソッドは抽象クラスにのみ存在する
  • 抽象クラスの実装


    クラス宣言のabstractキーワード
    public abstract class 클래스명 {
    	// 필드
    	// 생성자
    	// 메서드 (ex/ public abstract void hello();)
    }

  • 抽象クラスの継承extendsキーワードの使用
    抽象クラスを継承するクラスは、抽象クラスで抽象メソッドを実装する必要があります.
    ❗overrideは必須ですので、いくつかの機能を強制的に実装する場合があります

  • 活用する
    複数のクラスには多くの共通点がありますが、それらの処理方法はそれぞれ異なります.
    親クラスを抽象クラスとして定義し、子クラスを別々に実装する方法
  • Interface


    クラス構造の影響を受けずにクラスで実装できる「ルール」

    使用目的

  • クラス間の類似特性は自然な継承関係を必要としない
  • 開発コードを変更せずに使用可能なオブジェクトを変更できます.
    継承関係にかかわらず、似たような約束が適用されます.

    活用する

  • メソッドは、1つ以上のクラスで同様に適用される
  • を宣言する.
  • クラス自体を表示するのではなく、オブジェクトのプログラミングインターフェース(内部理解を必要としない)
  • を提供する.
  • インタフェースを使用して実装されるオブジェクトを参照できます.instanceofにより特定のオブジェクトを識別することができる
  • .

    インタフェース実装

  • インタフェース宣言
  • 	public interface 인터페이스명 {
    		// 추상메소드 선언 (abstract 키워드를 지정하지 않아도 됨)
    	}
  • インタフェースクラス実施
  • 	public class Point implements 인터페이스명 {
    		// 추상메소드 구현 (Ovrride)
    	}
  • インタフェース複数implements
  • 	public class Point implements Drawable, Resizeable, ... {
    		...
    	}

    Abstract Class vs. Interface


  • 抽象クラスセット定義汎用フィールドとメソッドの継承と実装(縦方向拡張)
    インタフェースにより、自然継承関係を破壊することなく、追加コンテンツの管理(横方向拡張)が可能になります.

  • 一般クラスvs抽象クラスvsインタフェース
    *エンティティメソッド
    ・方法の実施を含む従来の方法
    -抽象的アプローチとは逆の概念
  • 継承+実装

    class 클래스명 extends 부모클래스 implements 인터페이스, ... { }