티스토리 뷰
이것이 자바다 1권 8장 인터페이스 TIL
🔥 인터페이스의 역할
- 객체의 사용방법을 정의한 타입이다.
- 객체의 교환성을 높여주기 때문에 다형성을 구현하는 매우 중요한 역할을 한다.
- Java 8 에서 인터페이스의 중요성은 더욱 커졌다. Java 8의 람다식은 함수적 인터페이스의 구현 객체를 생성하기 때문이다.
🔥 인터페이스를 사용하는 이유?
- 개발 코드를 수정하지 않고, 사용하는 객체를 변경할 수 있도록 하기 위해서이다.
- 인터페이스는 하나의 객체가 아니라 여러 객체들과 사용이 가능하므로 어떤 객체를 사용하느냐에 따라서 실행 내용과 리턴값이 다를 수 있다.
- 따라서 코드 변경 없이 실행 내용과 리턴값을 다양화할 수 있다는 장점을 가진다.
🔥 인터페이스 선언
- class 키워드 대신에 interface 키워드를 사용한다.
[public] interface 인터페이스명 {...}
-
클래스는 필드, 생성자, 메소드를 구성 멤버로 가지는데 비해, 인터페이스는 상수와 메소드만을 구성 멤버로 가진다.
-
인터페이스는 객체로 생성할 수 없기 때문에 생성자를 가질 수 없다.
-
Java 8 부터 디폴트 메소드와 정적 메소드도 선언이 가능하다.
interface 인터페이스명{
//상수 (반드시 초기값 대입)
타입 상수명 = 값;
//추상 메소드
타입 메소드명(매개변수, ...);
//디폴트 메소드
default 타입 메소드명(매개변수, ...) {...}
//정적 메소드 (객체가 없어도 인터페이스만으로 호출 가능)
static 타입 메소드명(매개변수) {...}
}
🔥 인터페이스 구현 클래스
public class 구현클래스명 implements 인터페이스명{
//인터페이스에 선언된 추상 메소드의 실체 메소드 선언
}
-
인터페이스의 모든 메소드는 기본적으로 public 접근 제한을 갖기 때문에 public보다 더 낮은 접근 제한자를 작성할 수 없다. ("Cannot reduce the visibility of the inherited method" 컴파일 에러)
-
만약 추상 메소드에 대응하는 실체 메소드를 구현 클래스가 작성하지 않으면, 구현 클래스는 자동적으로 추상 클래스가 된다. 그렇기 때문에 클래스 선언부에 abstract 키워드를 추가해야 한다.
public abstract class Television implements RemoteControl{
public void turnOn(){...}
public void turnOff() {...}
}
🔥 다중 인터페이스 구현 클래스
public class 구현클래스명 implements 인터페이스 A, 인터페이스 B {
//인터페이스 A에 선언된 추상 메소드의 실체 메소드 선언
//인터페이스 B에 선언된 추상 메소드의 실체 메소드 선언
}
-
다중 인터페이스를 구현할 경우, 구현 클래스는 모든 인터페이스의 추상 메소드에 대해 실체 메소드를 작성해야한다.
🔥 인터페이스 사용
- RemoteControl 인터페이스로 구현 객체인 Television과 Audio를 사용하려면 다음과 같이 RemoteControl 타입 변수 rc를 선언하고 구현 객체를 대입해야 한다.
RemoteControl rc;
rc = new Television();
rc = new Audio();
//추상 메소드 사용
rc.turnOn(); //=> Television의 turnOn() 실행
rc.turnOff(); //=> Television의 turnOff() 실행
>> 타입 변화과 다형성 부분은 2편에서!
'☕️JAVA' 카테고리의 다른 글
이것이 자바다 1권 8장 확인문제 풀이 (0) | 2019.11.26 |
---|---|
이것이 자바다 1권 8장 인터페이스 TIL 정리 - 2 (0) | 2019.11.25 |
[JAVA] 이것이 자바다 1권 6장 확인문제 20번 풀이 (0) | 2019.11.19 |
[JAVA] 클래스(Class)관련 TIL 정리 1 (1) | 2019.11.12 |
[JAVA] 구구단 예제 풀어보기 (0) | 2019.09.16 |
댓글