-
[JAVA] 인터페이스(interface)Language/Java 2021. 6. 7. 16:03
인터페이스(interface)- 모든 메서드가 추상 메서드로 선언된다.
=> public abstract - 모든 변수가 상수로 선언된다.
=> public static final
interface 인터페이스 이름{
public static final float pi = 3.14f;
public void makeSomething( );
}- 디폴트 메서드와 정적 메서드 기능의 제공으로 일부 구현 코드가 있다.
인터페이스 구현과 형 변환
- 인터페이스를 구현한 클래스는 인터페이스 형으로 선언한 변수로 형 변환 할 수 있다.
=> Calc calc = new CompleteCalc( ) : Calc는 인터페이스 CompleteCalc는 구현된 클래스 - 상속에서의 형 변환과 동일한 의미이다.
- 클래스 상속과 달리 구현 코드가 없기 때문에 여러 인터페이스를 구현할 수 있다.
=> extends - 형 변환되는 경우 인터페이스에 선언된 메서드만 사용가능하다.
인터페이스가 하는 일- 클래스나 프로그램이 제공하는 기능을 명시적으로 선언해준다.
- 일종의 클라이언트 코드와의 약속이며 클래스나 프로그램이 제공하는 명세
- 클라이언트 프로그램은 인터페이스에 선언된 메서드 명세만 보고 이를 구현한 클래스를 사용할 수 있다.
- 어떤 객체가 하나의 인터페이스 타입이라는 것은 그 인터페이스가 제공하는 모든 메서드를 구현했다는 의미이다.
- 인터페이스를 구현한 다양한 객체를 사용한다.(다형성)
인터페이스 다형성
- 하나의 인터페이스를 여러 객체가 구현하게 되면 클라이언트 프로그램은 인터페이스의 메서드를 활용하여 여러 객체의 구현을 사용할 수 있다.(다형성)
인터페이스를 활용한 Data Acess Object구현
- DB에 회원 정보를 넣는 dao를 여러 DB제품이 지원될 수 있게 구현한다.
- 환경파일에서 database종류에 대한 정보를 읽고 그 정보에 맞게 dao인스턴스를 생성하여 실행할 수 있게 한다.
- Package 구성도
- domain.userinfo.dao.mysql.UserInfoMySqlDao.java
- domain.userinfo.dao.oracle.UserInfoOracleDao.java
- domain.userinfo.dao.IserInfoDao.java
- web.uerinfo.UserInfoClient.java
- db.properties
인터페이스의 여러가지 요소
- 모든 변수는 상수로 변환된다.(public static final)
=> double PI = 3.14, int ERROR = -99999999 - 모든 선언된 메서드는 추상 메서드이다.(public abstract)
- 디폴트 메서드: 구현을 가지는 메서드, 인터페이스를 구현하는 클래스들에서 공통으로 사용할 수 있는 기본 메서드
=> default 키워드 사용한다. - 정적 메서드: 인스턴스 생성과 상관 없이 인터페이스 타입으로 사용할 수 있는 메서드
=> static 키워드 사용한다.
인터페이스의 상속
- 인터페이스 사이에도 상속을 할 수 있다.
=> extends 키워드를 사용한다. - 인터페이스는 다중 상속이 가능하고 구현 코드의 상속이 아니라 타입 상속이라고 한다.
'Language > Java' 카테고리의 다른 글
[JAVA/자료구조] 자료구조(Data Structure) (0) 2021.06.08 [JAVA] Object 클래스와 Class클래스 (0) 2021.06.07 [JAVA/디자인패턴] 템플릿 메서드(Template Method) (0) 2021.06.06 [JAVA] 추상 클래스(abstract class) (0) 2021.06.06 [JAVA] 다형성(polymorphism)과 다운 캐스팅(downcasting) (0) 2021.06.05 - 모든 메서드가 추상 메서드로 선언된다.