인터페이스
- 메서드가 모두 추상 메서드인 순수 추상 클래스를 더 편리하게 사용할 수 있도록 기능을 제공
- class 가 아닌 interface 키워드를 사용한다.
- interface 는 모두 추상 메서드 이기 때문에 메서드에 abstract 키워드 생략 가능하다.
public interface InterfaceAnimal {
void aound();
void move();
}
⇒ 위와 같이 사용한다.
인터페이스 특징
- 인터페이스 메서드는 모두 public, abstract 이다. ⇒ 생략이 권장 된다.
- 인터페이스는 다중 구현 (다중 상속) 을 지원한다.
- 자기 자신의 객체 생성이 불가능 하다.
- 구현 시 모든 메서드를 오버라이딩 해야 한다.
- 주로 다형성을 위해 사용된다.
- 인터페이스의 자식 클래스는 뭔가 부모 인터페이스의 모든 것을 사용해야 하기 때문에 상속이 아니라 구현 이라고 표현한다. (메모리 구조는 상속과 같다)
- 구현 하는 자식 class 에서 implemets 라는 키워드를 사용 하여 구현 받는다.
⎈ 인터페이스의 메서드의 접근 제어자가 기본 public 인 이유?
- 인터페이스는 보통 여러 군데에 사용한다는 전제 하에 만들어 지기 때문에 public 이 기본으로 되어있다.
인터페이스의 멤버 변수
- 인터페이스의 멤버 변수는 public, static, final 태그가 모두 포함되어 있다고 간주하고 사용된다.
- static final 태그를 붙여 정적이면서 고칠 수 없는 상수로 만든다.
인터페이스의 메소드를 오버라이딩 한 메소드 호출 방식
⇒ 추상 class 의 추상 method 를 오버랑이딩 호출 과 같은 방식이다.
상속 VS 구현
- 상속 (클래스)
- 이름 그대로 부모의 기능을 물려 받는 것을 목적으로 사용한다.
- 부모의 기능 (메서드) 의 바디부위가 존재하고 그것을 자식이 가져다 사용하는 느낌
- 구현 (인터페이스)
- 모든 기능 (메서드)이 추상 메서드 이기 때문에 바디 부위가 없는 메서드를 자식이 전부 오버라이딩해 구현 해낸다는 느낌
⇒ 상속과 구현은 사람이 표현하는 단어만 다를 뿐 자바 입장에서 의 메모리 구조는 같고, 동일하게 작동한다.
인터페이스 사용 이유?
- 제약 : 인터페이스의 메서드를 반드시 구현해 내야한다는 것을 알려주기 위해, 그리고 인터페이스 내에 추상 메서드가 아닌 구현 메서드를 작성하는 실수를 막기 위해 사용한다.
- 다중 구현 : 상속은 자식이 1개의 부모만 받을 수 있지만 구현은 여러개의 인터페이스를 부모로 구현 할 수 있다.
'자바 공부 > [ 完 ] 자바 실전 - 기본편' 카테고리의 다른 글
11. 다형성과 설계 (0) | 2024.03.29 |
---|---|
10-9. 다형성 - 인터페이스의 다중 구현 (0) | 2024.03.29 |
10-7. 다형성 - 추상메소드만 존재하는 "순수 추상 클래스" (없는 용어) (0) | 2024.03.29 |
10-6. 다형성 - 추상클래스 (0) | 2024.03.29 |
10-5. 다형성 - 사용하는 이유와 사용법 (0) | 2024.03.29 |