[JavaとSpringBootで始まるWebプログラミング]3週目学習-4(インタフェース)


インタフェース


インタフェースとは?

  • 抽象型
  • は、クラスが実施すべき動作を指定するために使用される.
  • インタフェースを指定することで、クラスの役割と実装を理解できます.
  • インタフェース要素

  • 定数:インタフェースで指定する値
  • 抽象方法:実装すべき方法(このインタフェースの役割)
  • エラーメソッド:インタフェース内蔵メソッド(上書き可能)
  • 静的方法:インタフェースが提供する方法(上書き不可)
  • public interface Calc {
    	/* 상수 */
        dobule PI = 3.14;  
        
        /* 추상 메서드 */
        int add(int num1, int num2); 
        
        /* 디폴트 메서드 */
        default void display(int num1, int num2) {
        	System.out.println(num1 + "\t" + num2);
        }
        
        /* 정적 메서드 */
        static void showInfo() {
        	System.out.println("This is calc");
        }
    }

    インタフェースの役割は?

  • インタフェースは、説明(仕様)または承諾
  • である.
  • は、オブジェクトがインタフェースのタイプであることを示す.これは、インタフェースを実装する方法
  • を意味する.
  • クライアントプログラムは実際の実装を理解していないが、インタフェースの定義を理解するだけでこのオブジェクト
  • を使用することができる.
  • インタフェースを含む様々なオブジェクト-マルチチャネル
  • を使用

    インタフェースとポリシー・モード

  • インタフェースでは、プログラムを大幅に変更することなく、さまざまなポリシーまたはアルゴリズムを適用および拡張できます.
    以下に示すようにSortインタフェースを作成した場合は、そのインタフェースを使用して必要なソートに変換できます.
  • public interface Sort {
      public List<T> sort(List<T> list);
    }
    /* 전략 1 버블 정렬 */
    pulbic class BubbbleSort implements Sorting {
      @Override
      public List<T> sort(List<T> list)l {
         // bublesort 로직
         ...
         return list
      }
    }
    
    /* 전략 2 퀵 정렬 */
    pulbic class QuickSort implements Sorting {
      @Override
      public List<T> sort(List<T> list)l {
         // bublesort 로직
         ...
         return list
      }
    }
    /* 전략 3 힙 정렬 */
    pulbic class HeapSort implements Sorting {
      @Override
      public List<T> sort(List<T> list)l {
         // bublesort 로직
         ...
         return list
      }
    }