thug_choonsik 춘식이 주특기: 삼촌들 용돈 뺏기

인터페이스

» oop

자바의 인터페이스가 가지고 있는 객체 지향적 특징

추상화, 다형성, 캡슐화의 특징을 가지고 있다.

추상화

유사한 특징을 가진 객체들이 다른 객체들과 상호작용하기 위하여 공통적으로 필요한 메서드나 속성을 정의할 수 있다. 즉, 모든 클래스에게 이러한 메서드나 속성을 구현해야해! 하고 알려줄 수 있다. 이를 통해 세부적인 구현을 감추고, 객체들간의 관계에 집중할 수 있다.


다형성

동일한 인터페이스를 구현하는 클래스들은 동일한 메서드를 가지고 있으므로, 동일한 메서드를 호출하여도 각각 다른 동작을 수행할 수 있다. 상속을 이용하여 다형성을 구현할 수도 있지만, 인터페이스를 이용하여 다형성을 구현할 수도 있다. 클래스 하나당 상속은 하나만 받을 수 있지만, 인터페이스는 여러 개를 구현할 수 있어 비교적 자유롭게 다형성을 구현할 수 있다는 특징도 존재한다.

인터페이스와 추상 클래스 비교

  인터페이스 추상 클래스
다중 상속 가능 불가능
변수 선언 상수만 가능 가능
생성자 불가능 가능
접근 제어자 모두 public이었지만 자바 9부터 private 가능 가능


캡슐화

인터페이스를 사용하면 어떤 객체가 다른 객체들과 상호작용하는데에 필요한 메서드를 명확하게 구분할 수 있어, 공개할 메서드와 공개하지 않을 메서드를 적절하게 구분할 수 있다. 이를 통해 클래스의 구현 세부사항을 감추고 메서드와 속성을 적절하게 노출시켜 코드의 보안성을 높일 수 있다.