[Java] 객체지향개념 - 인터페이스(Interface)

miyeon·2023년 3월 19일
0

Java

목록 보기
10/10
post-thumbnail

인터페이스란?

추상메서드의 집합 (상수, static메서드, default메서드)

  • 구현된 것이 전혀없는 설계도(껍데기)
  • 모든 멤버가 public
  • 인터페이스내의 추상메서드와 상수의 제어자는 생략 가능 ( ∵ 모든 추상메서드와 상수는 항상(예외없이) 똑같은 제어자가 붙기 때문에)
    상수 : public static final
    추상메서드 : public abstract
    (제어자 "1개~모두" 생략 가능)

추상클래스와의 차이🤔

크게 iv의 존재 여부로 구분할 수 있다.

  • 추상 클래스는 일반 클래스이면서 추상메서드를 가진 것 👉 생성자, iv 존재
  • 인터페이스는 추상메서드외에 아무것도 존재하지 않음 👉 상수

상속

  • 인터페이스의 조상은 인터페이스만 가능 (object가 최고 조상이 아님)
  • 다중상속이 가능 👉 추상메서드는 충돌해도 문제 없음 (∵ 선언부가 같고 구현부가 다를때 충돌문제가 발생하는데, 추상메서드는 구현부가 없기 때문에)

구현

인터페이스에 정의된 추상메서드를 완성하는 것 👉 상속을 통해 : implements

  • 구현시 메서드 제어자로 public 붙여주기💡
    ∵ 인터페이스에서 제어자는 생략가능하기 때문에 public이 생략되어 있을 수 있지만, 오버라이딩 시, 조상보다 접근제어자의 범위가 좁아지면 안되기 때문 (생략시 default가 됨)

인터페이스의 장점

  1. 개발시간을 단축할 수 있다.
  2. 변경에 유리한 유연한 설계가 가능하다. (느슨한 결합)
    👉 변경이 적을수록 에러 발생률도 줄어든다.
  3. 표준화가 가능하다.
  4. 서로 관계없는 클래스들의 관계를 맺어줄 수 있다.


참고 📑

profile
내가 보려고 기록하는 블로그

0개의 댓글