1. 인터페이스(Interface)
Java에서 인터페이스는 클래스가 구현해야 하는 메서드의 집합을 정의하는 일종의 계약으로, 인터페이스는 다중 상속을 지원하며, 코드의 재사용성과 유연성을 높이는 데 중요한 역할을 합니다. 인터페이스는 interface 키워드를 사용해 정의합니다. 인터페이스는 메서드의 시그니처(이름, 매개변수, 반환 타입) 만을 포함하고, 구현(바디)은 포함하지 않습니다.
interface Soccer {
void dribble(); // 드리블
void kick(); // 슛
void handle(); // 펀칭
void success(); // 펀칭 성공공
}
2. 인터페이스 구현하기
인터페이스를 구현하는 클래스는 implements 키워드를 사용하여 인터페이스의 모든 메서드를 구현합니다.
class Player implements Soccer {
@Override
public void dribble() {
System.out.println("드리블");
}
@Override
public void kick() {
System.out.println("슈팅");
}
@Override
public void handle() {
System.out.println("플레이어어가 스로인");
}
@Override
public void success() {
System.out.println("골인!");
}
}
class Keeper implements Soccer {
@Override
public void dribble() {
System.out.println("골키퍼가 공을 잡고 서있습니다");
}
@Override
public void kick() {
System.out.println("골키퍼가 공을 멀리 보냅니다!");
}
@Override
public void handle() {
System.out.println("펀칭");
}
@Override
public void success() {
System.out.println("골키퍼가 펀칭했습니다.");
}
}
3. 인터페이스 사용하기
인터페이스를 사용하려면 다양한 클래스의 객체를 동일한 타입으로 처리할 수 있습니다. 이를 통해 다형성을 구현할 수 있습니다.
public class Main {
public static void main(String[] args) {
Soccer player = new Player();
Soccer keeper = new Keeper();
player.dribble(); // 드리블
player.kick(); // 슈팅
keeper.handle(); // 펀칭
keeper.kick(); // 공을 멀리 보냄
}
}
4. 인터페이스의 특징
- 다중 상속 지원: 클래스는 여러 인터페이스를 구현
- 추상 메서드: 인터페이스 내의 모든 메서드는 기본적으로 추상적(구현이 없고 바디가 없음)
- 상수: 인터페이스 내에서 선언된 변수는 자동으로 public, static, final임, 즉 상수로 취급
interface Constants {
int MAX_SPEED = 120; // public static final 생략 가능
}
5. 디폴트 메서드와 정적 메서드
Java 8부터 인터페이스는 디폴트 메서드와 정적 메서드를 지원합니다.
- 디폴트 메서드: 인터페이스 내에서 기본 구현을 제공
interface Animal {
void makeSound();
default void sleep() {
System.out.println("동물이 잠을 자고 있음");
}
}
- 정적 메서드
// 정적 메서드
interface Utility {
static void printHello() {
System.out.println("Hello");
}
}
// 사용
Utility.printHello(); // Hello
GitHub - Koras02/java-bloging: https://thinky.tistory.com/category/Back-End/Java
https://thinky.tistory.com/category/Back-End/Java. Contribute to Koras02/java-bloging development by creating an account on GitHub.
github.com
LIST
'Back-End > Java' 카테고리의 다른 글
[Java] 9장 컬렉션 프레임워크 (0) | 2025.03.25 |
---|---|
[Java] 8장 try-catch 문 (0) | 2025.03.18 |
[Java] 6장 상속과 다형성 (0) | 2025.03.06 |
[Java] 5장 클래스와 객체 (0) | 2025.03.02 |
[Java] 4장 메서드 작성 (0) | 2025.02.26 |