반응형
Notice
Recent Posts
Recent Comments
Link
| 일 | 월 | 화 | 수 | 목 | 금 | 토 |
|---|---|---|---|---|---|---|
| 1 | 2 | 3 | ||||
| 4 | 5 | 6 | 7 | 8 | 9 | 10 |
| 11 | 12 | 13 | 14 | 15 | 16 | 17 |
| 18 | 19 | 20 | 21 | 22 | 23 | 24 |
| 25 | 26 | 27 | 28 | 29 | 30 | 31 |
Tags
- string
- Eclipse
- 자바문법
- input
- 문자열
- list
- Visual Studio Code
- Java
- junit5
- 자바
- 테스트자동화
- junit
- vscode
- 단위테스트
- 이클립스
- js
- json
- java테스트
- 인텔리제이
- javascript
- math
- ArrayList
- 배열
- Array
- IntelliJ
- 정규식
- HashMap
- 자바스크립트
- html
- CSS
Archives
- Today
- Total
어제 오늘 내일
[Java] 인터페이스(interface) 사용법 및 예제 본문
Java에서 interface(인터페이스)는 클래스를 설계할 때 규칙(기능의 명세)을 정의하는 역할을 합니다.
인터페이스는 객체가 “무엇을 할 수 있는지”를 정의하며, 실제 구현은 이를 구현(implements)한 클래스가 담당하게 됩니다.
인터페이스는 다형성과 유연한 구조 설계에 핵심적으로 사용됩니다.
1. interface란?
인터페이스는 추상 메서드들의 집합으로 볼 수 있습니다.
(단, Java 8 이후에는 default 메서드와 static 메서드도 포함 가능)
특징
- 생성자 없음
- 객체 생성 불가
- 모든 메서드는 기본적으로 추상(abstract)
- 다중 구현(implements)이 가능
- 클래스가 수행해야 할 기능을 명확히 강제
형식:
interface 인터페이스명 {
// 추상 메서드
void method();
}
2. 인터페이스 구현(implements)
클래스는 implements 키워드를 사용해 인터페이스를 구현할 수 있습니다.
interface Animal {
void sound();
}
class Dog implements Animal {
@Override
public void sound() {
System.out.println("멍멍");
}
}
설명
- Dog는 Animal 인터페이스의 sound() 메서드를 반드시 구현해야 함
3. 인터페이스 활용 예제
예제 1: 여러 클래스에서 같은 규칙 적용
interface Printable {
void print();
}
class Document implements Printable {
@Override
public void print() {
System.out.println("문서 출력");
}
}
class Photo implements Printable {
@Override
public void print() {
System.out.println("사진 출력");
}
}
이처럼 인터페이스를 사용하면 다양한 클래스가 같은 규칙을 공유하게 되어 일관성 있는 구조를 만들 수 있습니다.
4. 인터페이스 다형성
인터페이스 타입으로 객체를 참조할 수 있으며, 이는 다형성을 구현하는 핵심입니다.
Printable p = new Document();
p.print(); // 문서 출력
p = new Photo();
p.print(); // 사진 출력
설명
- Printable 타입 하나로 다양한 객체를 다룰 수 있음
5. 인터페이스 상속
인터페이스는 또 다른 인터페이스를 상속할 수 있습니다.
여러 인터페이스를 동시에 상속하는 것도 가능(다중 상속).
interface A {
void a();
}
interface B {
void b();
}
interface C extends A, B {
void c();
}
설명
- C 인터페이스는 A, B의 기능도 함께 가져감
6. default 메서드 (Java 8+)
인터페이스에서도 **구현된 메서드(default method)**를 가질 수 있습니다.
interface MyInterface {
default void hello() {
System.out.println("Hello from interface");
}
}
특징
- 구현체에서 선택적으로 오버라이딩 가능
- 인터페이스 변경 시 기존 코드 깨짐을 방지
7. static 메서드 (Java 8+)
인터페이스 안에 static 메서드도 정의할 수 있습니다.
interface Util {
static void info() {
System.out.println("인터페이스 static 메서드");
}
}
Util.info();
특징
- 인터페이스명으로 직접 호출
- 구현 클래스에서는 사용할 수 없음
8. 전체 예제
interface Shape {
void draw();
}
class Circle implements Shape {
@Override
public void draw() {
System.out.println("원을 그립니다");
}
}
class Square implements Shape {
@Override
public void draw() {
System.out.println("사각형을 그립니다");
}
}
public class Main {
public static void main(String[] args) {
Shape s1 = new Circle();
Shape s2 = new Square();
s1.draw();
s2.draw();
}
}
출력
원을 그립니다
사각형을 그립니다
9. 정리
- 인터페이스는 기능을 정의하는 규칙(명세)
- 클래스는 implements로 인터페이스를 구현
- 여러 클래스에 동일한 기능을 강제할 수 있음
- 다형성 지원 → 인터페이스 타입으로 다양한 객체 처리 가능
- Java 8 이후에는 default, static 메서드도 지원
반응형
'IT > Java' 카테고리의 다른 글
| [Java] 추상 클래스와 인터페이스 차이 (0) | 2025.12.24 |
|---|---|
| [Java] 추상클래스란? (abstract class) (0) | 2025.12.24 |
| [Java] 객체 타입 확인 (instanceof) (0) | 2025.12.23 |
| [Java] 클래스 형변환 (업캐스팅, 다운캐스팅) (0) | 2025.12.22 |
| [Java] 자식 클래스 호출 (0) | 2025.12.22 |
Comments
