[Java] Interface 인터페이스

Sun choi·2024년 8월 9일

NEW 지식

목록 보기
15/34

인터페이스에 관한 (내가 헷갈리는 ) 모든 것!


상속관계가 없는 클래스들의 동일한 범위!
추상클래스와 비슷
직접 인스턴스화를 할 수 없다. 구현체가 있어야함!

모든 멤버변수는 public statiic final
모든 메서드는 public abstract

또한 다형성의 원리로 자동 타입변환, 강제 타입변환 둘 다 가능하다.

public class 클래스명 implements 인터페이스명 { }


인터페이스에서는 일반메서드는 default메서드static메서드만 정의 가능.

  • 디폴트 메서드는 추상메서드의 기본적인 구현을 제공해준다.
    메인메서드에서 main.default 메서드명() 이렇게 바로 사용할 수 있다.
  • 인터페이스의 static 메서드 또한 객체 없이 호출 가능한데, 메인메서드에서
    인터페이스명.static 메서드명() 이렇게 호출 가능하다.

내가 강의 중 가장 헷갈렸던 곳!

  • 상속받은 클래스에서 추상클래스의 추상메서드는 반드시 오버라이딩 되어야 한다.
  • 인터페이스의 추상메서드는 구현될 때 반드싱 오버라이딩 되어야 한다. 만약 일부만 구현해야 한다면 해당 클래스를 추상클래스로 변경하면 된다.

이 두 문장이다.
결론은! 추상클래스도 인터페이스도 상속받은 클래스에서는 추상메서드를 반드시 재정의하여 구현해야한다. (오버라이딩)

🍄 추상클래스와 인터페이스 비교

공통점

  • 객체 생성을 할 수 없다.(인스턴스화 x)
  • 추상메서드 포함한다. (구현이 없는 선언부만 가지고 있는)
  • 상속받은 클래스에서는 추상메서드를 반드시 재정의하여 구현해야 한다.(오버라이딩)

추상클래스

  • 상속받아서 기능을 확장시키는 데 목적
  • 클래스다 (abstract class)
  • 일반메서드 정의 가능
  • 변수 선언 및 사용 가능
  • 다중상속 불가능

인터페이스

  • 구현 객체의 동일한 실행 기능을 보장하기 위한 목적
  • 클래스가 아니다 (interface)
  • 일반메서드는 default메서드, static메서드만 정의 가능
  • 상수만 사용 가능
  • 다중상속 가능

추상클래스가 미완성 설계도라면 인터페이스는 밑그림만 그려진 기본 설계도이다.
추상클래스 안에 원하는 것만 추상 메서드를 여러개 두거나 전부 추상 메서드로 만들게 되면 추상 클래스가 인터페이스 역할을 할 수 있다.


Spring을 배우면서 인터페이스에 대해 더 알게 되는게 생기면 추가하겠음!
profile
풀스택 개발자의 공부기록 📖

0개의 댓글