인터페이스
Jul 25, 2023
»
oop
자바의 인터페이스가 가지고 있는 객체 지향적 특징
추상화, 다형성, 캡슐화의 특징을 가지고 있다.
추상화
유사한 특징을 가진 객체들이 다른 객체들과 상호작용하기 위하여 공통적으로 필요한 메서드나 속성을 정의할 수 있다. 즉, 모든 클래스에게 이러한 메서드나 속성을 구현해야해! 하고 알려줄 수 있다. 이를 통해 세부적인 구현을 감추고, 객체들간의 관계에 집중할 수 있다.
다형성
동일한 인터페이스를 구현하는 클래스들은 동일한 메서드를 가지고 있으므로, 동일한 메서드를 호출하여도 각각 다른 동작을 수행할 수 있다. 상속을 이용하여 다형성을 구현할 수도 있지만, 인터페이스를 이용하여 다형성을 구현할 수도 있다. 클래스 하나당 상속은 하나만 받을 수 있지만, 인터페이스는 여러 개를 구현할 수 있어 비교적 자유롭게 다형성을 구현할 수 있다는 특징도 존재한다.
인터페이스와 추상 클래스 비교
| 인터페이스 | 추상 클래스 | |
|---|---|---|
| 다중 상속 | 가능 | 불가능 |
| 변수 선언 | 상수만 가능 | 가능 |
| 생성자 | 불가능 | 가능 |
| 접근 제어자 | 모두 public이었지만 자바 9부터 private 가능 | 가능 |
캡슐화
인터페이스를 사용하면 어떤 객체가 다른 객체들과 상호작용하는데에 필요한 메서드를 명확하게 구분할 수 있어, 공개할 메서드와 공개하지 않을 메서드를 적절하게 구분할 수 있다. 이를 통해 클래스의 구현 세부사항을 감추고 메서드와 속성을 적절하게 노출시켜 코드의 보안성을 높일 수 있다.