ABOUT ME

-

Today
-
Yesterday
-
Total
-
  • 인터페이스
    언어/JAVA 2023. 7. 6. 00:01

     

    1. 인터페이스 역할

     

    - 인터페이스는 코드의 분리와 관련이 있다.

     -인터페이스는 다형성의 주된 기술

     - 두 객체를 연결하는 역할을 한다.

     

    *인터페이스는 접점으로 타 클래스,서비스와 연결

    * 인터페이스는 제공자구현자 따로 있다고 생각하면 편해진다. 

      >제공자는 인터페이스형으로 부품을 채워넣고 -> 구현은 따로

     

    2. 인터페이스 선언

     

    interface사용 - default (같은 패키지) public(모든 패키지) 접근제어자 사용가능

     

    3. 상수필드

     

    public static final 타입 상수명 = 값 가질 수 있다. 

    인터페이스 소속멤버 

     

    public abstract method 추상메서드 

    구현 클래스가 완성해야하는 추상메서드

    인터페이스의 핵심 (부품화,다형성)

    인스턴스 소속 멤버 

     

    default 메서드 완전한 실행코드 가짐 

    기존 인터페이스에 메서드 추가되면..다 고쳐야하는데 개오바임

    이럴때 좋은 녀석 

    접근제어자 public으로 바꾸고 오버라이딩 가능 

    인스턴스 소속 멤버  

     

    static 메서드 

    인터페이스 소속 멤버

    메서드 완성해야함 

     

    -번외

    private 메서드 -> default에서 사용가능 (default간 중복코드 제거용)

    private static 메서드 -> default, static메서드 중복코드 제거용 

     

    public interface Service{
    
    default void defaultMethod1(){
    //고유코드
    defaultCommon()
    }
    
    default void defaultMethod2(){
    
    defaultCommon()
    }
    
    private void defaultCommon(){
    //공통처리
    
    }
    
    
    //정적 메소드 
    
    static void staticM1(){
    //고유코드
    staticCommon();
    }
    
    static void staticM2(){
    //고유코드
    staticCommon();
    }
    
    private static void staticCommon(){
      //공통처리
    }
    
    
    
    }

     

     

    8. 다중인터페이스 구현

     

    -여러개 인터페이스 implements 할 수 있다

    - 두개의 인터페이스하나의 구현클래스에 접근할 수 있다는 것 

     

    9. 인터페이스 상속

     

    - 인터페이스는 다중상속 허용

    - 부모 인터페이스 참조변수 = 구현체 --> 부모 인터페이스 메서드만 사용가능

       자식 인터페이스 참조변수 = 구현체 --> 모두 사용가능

      (상속과 일치)

     

    10. 인터페이스 타입변환

     

    - 인터페이스와 구현클래스간 발생

    **** 부모 클래스가 인터페이스 구현 -> 이를 상속받은 자식클래스간접적으로 인터페이스를 구현하므로

          인터페이스로 타입변환이 가능함!! 

    - 인터페이스 참조변수를 구현 클래스로 강제 타입변환도 가능

     

    11. 다형성 

     

    - 인터페이스는 다형성을 구현하는 주된 기술이다. 

    - 메서드 오버라이딩 + 자동 타입변환 --> 다형성 

     

    구현체는 인터페이스 타입으로 자동 타입변환이 되고, 메소드 호출시 재정의된 메서드가 호출됨

     

    > 필드의 다형성 

     

    특정 필드를 인터페이스형으로 설정해두고, 이를 구현한 클래스를 끼어넣을 수 있는 그런 것

    인터페이스 타입 필드 -> 일종의 api 

    제공자는 구현되어야할 메서드만 정의한 뒤에 이를 필드로 사용하고, 구현은 넘김 (부품,분리,교체)

     

    >매개변수의 다형성

     

    매개변수를 인터페이스로 선언하면 메서드 호출 시 다양한 구현체를 대입할 수 있다.

     

     

     

     

     

    -번외

     

    봉인된 인터페이스 (sealed 자바 15부터 추가 자세한 내용은 책보기)

     

    추상클래스와 인터페이스 차이

       추상클래스는 공통분모를 일반화 한것 ( 공통, 집중화, 추상화)

    - 공통코드를 통해 일괄관리 가능 

    - 부품들 집중화 위한 것 

     

     인터페이스 

    - 틀을 먼저 제공 - 실제 부품은 아직 x

    - 서로 관련 없는 클래스라도 인터페이스 상속으로 부품 가능 -> 집중화가 아님

    - 인터페이스는 캡슐단위, 일부기능, 코드 일부 구간 3가지에서 사용가능 

    - 일정 기능만 구현해 놓으면, 다양한 클래스들을 엮어서 다양한 형태 만들 수 있음 --> 다형성 

     

    FileReader fi = new FileReader(//경로)
    Scanner sc = new Scanner(fi);
    String classname = sc.nextLine();
    
    
    A a = new A();
    
    //파일로부터 읽어온 이름으로 Class객체 만든 후, newinstance()메서드로 구현체 생성
    Class newclass = Class.forName(className);
    Totalable tc = (Totalable) nc.newinstance(); 
    
    a.setTotalable(tc);
    
    
    
    //
    파일 내용 nw.java.B
Designed by Tistory.