[Java] 인터페이스

dadev·2021년 8월 9일
0

Java

목록 보기
4/12
post-thumbnail

✍ Interface 키워드를 통해 선언할 수 있음.

JDK 8 이후로 상수, 추상메소드에서 디폴트메소드, 정적 메소드까지 추가 가능


✔ 상수

인터페이스에서 값 지정

함부로 바꾸지 말고 제공해주는 값 참조해라.(절대적)

✔ 추상메소드

가이드만 줄 테니 추상메소드를 오버라이팅해서 재구현해라.(강제적)

✔ 디폴트 메소드

인터페이스에서 기본저으로 제공해주지만, 맘에 안들면 각자 구현해서 써라.(선택적)

✔ 정적 메소드

인터페이스에서 제공해주는 거 무조건 써라.(절대적)


❓ 여기서 절대적, 강제적의 의미란?

절대적 : 정말 아무것도 손댈 수 없음.

강제적 : 그래도 인터페이스 implements하지 않으면 피할 수는 있음.


추상 메소드를 인터페이스에서 추가하면, implements한 모든 클래스에서 강제적으로 추상메소드 구현해야함. 안하면 에러남.

쉽게 말해, 이미 운영되고 있는 시스템에서 추가 요건으로 인해 불가피하게 반영해야할 때 디폴트메소드 쓰면 효과적


❓ 여기서 한가지 의문점

추상클래스와 인터페이스의 차이점을 무엇일까?

우선 추상클래스는?

✔ 상속 통해 자손 클래스에서 완성하도록 유도하는 클래스

✔ 미완성 설계도

✔ 상속을 위한 클래스이므로 따로 객체 설정 불가

✔ IS – A : “~이다”


인터페이스란?

✔ 추상 클래스처럼 다르 클래스를 작성하는데 도움을 주는 목적으로 작성

✔ 다중상속(구현) 가능

✔ 기본 설계도

✔ HAS – A : “~을 할 수 있는”


❓ 왜 분리되는가?(차이점)

❗ 다중 상속의 가능 여부 때문에

한 개의 클래스만 상속이 가능하여 해당 클래스의 구분을 추상클래스 상속을 통해 해결하고, 할 수 있는 기능을 인터페이스로 구현


💡 최종 정리

✔ 추상클래스 사용 시기 : 상속 관계를 타고 올라갔을 때 같은 조상클래스를 상속하는데 기능까지 완벽히 똑 같은 기능이 필요한 경우

✔ 인터페이스 사용 시기 : 상속 관계를 쭉 타고 올라갔을 때 다른 조상클래스를 상속하는데 같은 기능이 필요한 경우


➕ 또 하나 새롭게 알게된 사실

인터페이스는 몸체에서 선언된 것이 무조건 바디에서 지정되어야 한다는 단점이 있었지만, JAVA 8 이후로 인터페이스에 default 기능이 추가되어서 인터페이스로 구현할 수 있다고 한다!!


위 내용은 구글을 참조하여 작성됨.

profile
매일매일 최선을 다하는 개발자

0개의 댓글