반응형
인터페이스(interface)
- 사전적 정의
- "서로 다른 두 시스템, 장치, 소프트웨어 따위를 서로 이어 주는 부분. 또는 그런 접속 장치" - 표준국어대사전
자바의 인터페이스
- 함수를 미리 선언하고 구현은 비워놓은 추상 메소드
- 함수 선언을 지켜서 구현하라는 약속
- 인터페이스로 선언된 함수들은 다른 클래스에서 구현됨
- 인터페이스의 장점 두 가지
- 이미 구현된 것들을 교체하기 쉬움
- 다중 상속을 해야 하는 경우에 사용 가능
class 클래스이름 implement 인터페이스 이름 { // 인터페이스에서 선언된 함수 구현 코드 // 나머지 코드 }
- 인터페이스의 장점 두 가지
- 인터페이스는 상속 관계의 부모 클래스와 유사하게 사용 가능
- 인터페이스를 구현하는 클래스 객체도 인터페이스 변수에 저장하거나 인자로 전달 가능
- 인터페이스는 부모 클래스인 것처럼 사용되지만, 실제 클래스는 아님
- 인터페이스만으로 객체 생성 안됨
- 인터페이스는 최소한의 기능으로 분리시키는 것이 구현클래스를 복잡하게 만들지 않는 설계 방법
다중 상속
- 자바는 다중 상속을 할 수 없지만 인터페이스를 이용해서 비슷한 효과를 낼 수 있음
class 자식_클래스_이름 extends 부모_클래스_이름 implements 인터페이스_이름1, 인터페이스_이름 {
// 인터페이스 구현 코드
// 클래스 구현 코드
}
인터페이스 상속
- 인터페이스는 다른 인터페이스를 상속할 수 있음
- 클래스 상속 받는 것처럼 extends 사용
interface C { void c(); } interface D extends C { void d(); }
- 클래스에서 상속된 인터페이스를 구현한다면 부모와 자식 인터페이스에 있는 모든 함수를 구현해야함
- 인터페이스 상속은 일반적이지는 않음
디폴트 메소드(default method)
- "default"로 시작하는 함수(그 무엇보다 먼저 있어야 함)
- 인터페이스에 함수 코드를 구현
interface IAnimal{
public String getSpecies();
default public String getSound(){
return "squeak";
}
}
- 디폴트 메소드는 인터페이스에 새로운 내용이 추가되는 경우 기존에 작성한 인터페이스 구현 클래스를 그대로 사용할 수 이는 호환성을 보장
- 디폴트 메소드를 이용하면 기존 코드를 수정하지 않고 사용 가능
추상 클래스(abstract class)
- 추상 클래스는 선언만 하고 구현하지 않은 추상 메소드를 한 개 이상 포함
- 한 개 이상의 추상 메소드가 존재하면 클래스도 abstract 키워드를 붙여서 선언
- 추상 메소드와 일반 메소드가 함께 존재 가능
인터페이스 또는 추상 클래스
- 인터페이스와 추상 클래스는 구현 클래스 또는 자식 클래스가 어떤 형태로 동작해야 하는지를 지정하는 목적으로 사용됨
- 추상 클래스는 속성을 넣을 수 있음
- 속성의 필요성을 고민해서 인터페이스와 추상 클래스 중에서 결정
출처 - 상명대 객체지향프로그래밍 강의
반응형
'CS > OOP' 카테고리의 다른 글
[OOP] 좋은 객체 지향 설계의 5가지 원칙이란?(SOLID) (0) | 2021.08.13 |
---|---|
상속(inheritance) [JAVA] (0) | 2021.03.15 |
클래스들의 관계[JAVA] (0) | 2021.03.06 |
클래스(Class) [JAVA] (0) | 2021.02.24 |