인터페이스는 자바에서 다중 상속을 지원하는 중요한 개념입니다.
인터페이스는 추상 메서드만을 포함 하며, 객체의 공통된 기능을 강제할 수 있도록 합니다.
인터페이스는 일반 클래스와 달리 객체 생성이 불가능 하며, 구현 클래스에서 반드시 메서드를 오버라이딩하여 사용해야 합니다.
인터페이스의 주요 특징
- 인터페이스는 interface 키워드를 사용하여 선언합니다.
- 인터페이스는 **상수(public static final)**와 **추상 메서드(public abstract)**로만 구성되어 있습니다.
- 인터페이스는 다중 상속을 지원하므로 여러 개의 인터페이스를 동시에 구현할 수 있습니다.
- 인터페이스의 모든 메서드는 public abstract의 특성을 갖습니다. 메서드의 선언부만 있고, 몸체는 없습니다.
예제
인터페이스 선언
public interface Inter1 {
// 인터페이스에 선언된 메서드
void method01(); // 추상 메서드
}
public interface Inter2 {
double PI = 3.14; // 인터페이스의 상수 선언
void method02(); // 추상 메서드
}
클래스가 인터페이스를 구현
public class Basic implements Inter1, Inter2 {
// Inter1의 메서드를 오버라이딩
@Override
public void method01() {
System.out.println("오버라이드 된 메서드 1번");
}
// Inter2의 메서드를 오버라이딩
@Override
public void method02() {
System.out.println("오버라이드 된 메서드 2번");
}
// 인터페이스에서 선언된 static 메서드 호출
public void method03() {
System.out.println("basic의 메서드 3번");
}
}
Main 클래스
public class MainClass {
public static void main(String[] args) {
// 인터페이스 타입으로 객체 생성 (다형성 활용)
Basic b = new Basic();
b.method01(); // 오버라이드된 메서드 호출
b.method02(); // 오버라이드된 메서드 호출
b.method03(); // 기본 메서드 호출
System.out.println("------------------------------");
// 인터페이스의 부모 타입으로 변환
Inter1 i1 = b;
i1.method01(); // 오버라이드된 메서드 호출
Inter2 i2 = b;
System.out.println("PI: " + i2.PI); // 인터페이스의 상수 사용
i2.method02(); // 오버라이드된 메서드 호출
}
}
출력 결과
오버라이드 된 메서드 1번
오버라이드 된 메서드 2번
basic의 메서드 3번
------------------------------
오버라이드 된 메서드 1번
PI: 3.14
오버라이드 된 메서드 2번
인터페이스의 특징
- 인터페이스는 추상 메서드만 포함되며, 객체 생성이 불가능합니다.
- implements 키워드를 사용해 클래스가 인터페이스를 구현합니다.
- 다중 상속을 지원하여 여러 개의 인터페이스를 동시에 구현할 수 있습니다.
- 인터페이스에 선언된 모든 메서드는 public abstract이며, 구현 클래스에서 반드시 오버라이딩해야 합니다.
다중 인터페이스 구현 예제
public interface InterA {
void methodA();
}
public interface InterB {
void methodB();
}
public class MultiInterfaceExample implements InterA, InterB {
@Override
public void methodA() {
System.out.println("InterA의 메서드 A 구현");
}
@Override
public void methodB() {
System.out.println("InterB의 메서드 B 구현");
}
}
Main 클래스
public class MainClass {
public static void main(String[] args) {
MultiInterfaceExample example = new MultiInterfaceExample();
example.methodA(); // InterA 메서드 호출
example.methodB(); // InterB 메서드 호출
}
}
출력 결과
InterA의 메서드 A 구현
InterB의 메서드 B 구현
인터페이스의 활용
- 인터페이스는 프로그램의 확장성과 유지보수성을 높이며, 다형성을 통해 유연한 코드 작성이 가능합니다.
- 여러 클래스들이 동일한 기능을 공유할 때, 인터페이스를 사용하여 공통된 메서드를 강제할 수 있습니다.
'Java' 카테고리의 다른 글
[JAVA] Final , abstract(추상) (0) | 2025.01.11 |
---|---|
[JAVA] Static과 Singleton 패턴 (0) | 2025.01.11 |
[JAVA] 자바의 다형성(Polymorphism) 이해하기: 개념부터 예제까지 (0) | 2025.01.11 |
[JAVA] 접근제어자, 은닉 (0) | 2025.01.11 |
[JAVA] 오버라이딩(Overriding) , 오버로딩(overloading) , super 와this (0) | 2024.11.30 |