인터페이스(Interface)란 무엇인가?
인터페이스는 자바에서 객체가 어떻게 행동해야 하는지 정의한 타입이다. 사전적으로 인터페이스는 '결합부' 또는 '접속기'로 해석될 수 있으며, 이는 사용자간 또는 컴퓨터간 통신이 가능하게 해주는 디바이스나 프로그램을 의미한다. 자바에서 인터페이스는 이와 같은 사전적 의미를 갖고 있으며, 클래스가 어떤 메서드를 반드시 구현해야하는지 명시하여, 클래스와 클래스 간의 통신 방법을 제공하는 것이 자바의 인터페이스이다.
인터페이스 문법
자바에서 인터페이스는 'interface' 키워드를 사용하여 선언한다. 인터페이스는 일종의 클래스와 비슷하게 보일 수 있지만, 메서드를 선언할 때 구현부가 없고, 모든 메서드는 public aabstract이다.
인터페이스를 구현하는 클래스는 'implements' 키워드를 사용하며, 인터페이스에서 선언된 모든 메서드를 구현해야 한다.
예제
interface MyInterface{
void myMethod(); // 추상 메서드
}
class MyClass implements MyInterface{
@Override
public void myMethod() {
//메서드 구현
}
}
인터페이스 장점
인터페이스는 코드의 표준화를 가능하게 한다. 예를 들어, 여러 개발팀이 동일한 기능을 갖는 다른 구현체를 개발해야 하는 경우, 팀 간의 협업이 쉽지 않을 수 있다. 이럴 때 인터페이스를 사용하면, 각 팀은 동일한 인터페이스를 구현하여 통합 및 유지관리가 용이해진다.
추상메서드 vs 인터페이스
추상클래스는 인스턴스화할 수 없는 클래스이다. 추상 클래스는 하나 이상의 추상 메서드를 가질 수 있으며, 인스턴스 변수를 가질 수 있다. 추상 클래스는 상속을 통해 자식 클래스에서 추상 메서드를 구현하게 한다.
반면에 인터페이스는 클래스가 아니다. 인터페이스는 메서드와 상수만을 정의할 수 있다. 인터페이스의 모든 메서드는 기본적으로 public abstract이며, 모든 변수는 public static final이다. 인터페이스는 일종의 템플릿 역할을 하며, 이를 구현하는 모든 클래스가 이에 명시된 메서드를 반드시 구현해야 한다.
상속 vs 구현
클래스와 인터페이스의 가장 큰 차이점 중 하나는 "상속"에 있다. 자바에서는 클래스는 "단일 상속"만 가능하지만, 인터페이스는 "다중 상속"이 가능해진다. 즉, 클래스는 한 번에 하나의 클래스만 확장할 수 있지만, 인터페이스는 여러 인터페이스를 동시에 구현할 수 있다.
예제
interface InterfaceA{
void methodA(); // 추상 메서드
}
interface InterfaceB{
void methodB(); // 추상 메서드
}
class MyClass implements InterfaceA, InterfaceB{
@Override
public void methodA() {
// InterfaceA 메서드 구현
}
@Override
public void methodB() {
// InterfaceB 메서드 구현
}
}
extends vs implements 우선순위
자바에서 클래스는 다른 클래스를 상속하기 위해 'extends'를, 인터페이스를 구현하기 위해 'implements'를 사용한다. 하나의 클래스가 다른 클래스를 상속하면서 동시에 인터페이스를 구현하는 경우, 'extends'가 'implements'보다 우선순위를 갖는다. 즉, 먼저 클래스를 상속하고, 그 다음에 인터페이스를 구현한다.
예제
class SuperClass{
// SuperClass 메서드 및 필드
}
interface MyInterface{
void myMethod(); // 추상 메서드
}
class MyClass extends SuperClass implements MyInterface {
@Override
public void myMethod() {
// MyInterface 메서드 구현
}
}
'Java > JAVA 100 문제 풀이' 카테고리의 다른 글
자바 part.4 문제풀이 - 자바의 다형성(polymorphism) (0) | 2023.07.27 |
---|---|
자바 part.4 문제풀이 - 인터페이스와 상속 활용하기 (0) | 2023.07.26 |
자바 part.4 문제풀이 - 추상 클래스(Abstract Class)개념, 필요 (0) | 2023.07.26 |
자바 part.3 문제풀이 - 객체배열의 이해와 다형성 활용 (0) | 2023.07.25 |
자바 part.3 문제풀이 - 상속과 캡슐화 (0) | 2023.07.25 |