개발자 항해

인터페이스(interface) - 1 본문

Programming/Java

인터페이스(interface) - 1

리치Y 2022. 7. 29. 22:15
  • 인터페이스(interface)란?

모든 메서드가 추상메서드로만 이루어진 일종의 기본 설계도로 구현된 코드가 없는것이 특징이다.

그래서 인터페이스로 인스턴스를 생성할수도 없다. 

 

그렇다면 인터페이스는 왜 쓰는것일까?

 

 

1. 인터페이스 필요성( 장점 )

 

 1) 구현의 강제성 부여 (= 통일성)

     - 인터페이스를 상속받은 서브클래스 들은 반드시 추상메서드를 구현해야한다.

        (이때 메서드 이름이 통일된다.)

 

  2) 모듈 교체 용이 (= 무기교체,  C 타입 usb)

    - 부모타입인 인터페이스 타입을 변수로 사용하여 각 서브 클래스를 다룰경우

       특정 서브클래스가 또 추가되더라도 공통 코드의 변경이 필요없이 

       새로운 클래스만 정의하게 되면 언제든지 인스턴스 교체를 통해 서브클래스를 다룰수있다.

       ex) JDBC 인터페이스(Connection 등)를 통해  MySQL과 Oracle 드라이버 교체만으로 

       각 데이터베이스를 동일한 방법으로 다룰수 있도록해준다.  

 

  3) 상속 관계가 없는 객체끼리의 관계를 부여하여 다형성 활용 가능

       (Bird, SuperMan, Airplane ->(공통점) Flyer)

 

  4) 모듈간 독립적 프로그래밍으로 인한 개발 기간 단축

 

 

 아래에서 하나씩 살펴보자.

 

  1) 구현의 강제성 부여 (= 통일성) : 상속받은 추상메서드는 모두 구현해야한다.

 

extends를 이용한 인터페이스끼리 상속이므로 바디{}를 써서 추상메서드를 구현하면 오류가 발생한다.

 interface 와  implements를 같이 써도 오류.

 

 

아래에서 ITotal 인터페이스를 구현해보자

 

  추상메서드를 구현하고 싶으면 클래스에서 implements를 써서 인터페이스를 상속받고 

상속 받은 추상메서드는 모두 구현해야한다.

 

아래 캡쳐처럼 하나라도 빠지면 오류가 난다.

 

상속 받은 추상메서드를 모두 구현하지 않고, 오류가 안나게 하려면 어떻게 해야할까?

 

 

 

나머지 장점들은 다음 게시글에