1. 인터페이스란?
**인터페이스(Interface)**는 객체가 어떤 방식으로 동작해야 하는지를 정의하는 추상 타입입니다. 인터페이스는 다음과 같은 특징을 가집니다.
- 추상 메서드와 상수만 포함된 특수한 클래스
- 모든 메서드는 추상 메서드 (abstract)이며, 실제 구현은 인터페이스를 구현한 클래스에서 담당한다.
- 모든 필드는 상수 (public static final)로 선언됨
- 다중 구현 가능: 한 클래스에서 여러 인터페이스를 동시에 구현할 수 있음
- 객체의 행동(행위)을 정의하는 역할을 수행
2. 인터페이스 특징
1) 메서드: 모든 메서드는 public abstract 으로 선언!
2) 변수(필드): 모든 변수는 public static final 로 선언!
>> 키워드 생략 가능
3. 인터페이스 구현
1) class file 만들기

intellij 의 경우 새로운 class 를 만들 때 interface로 만들어주면 Interface를 만들 수 있다.
interface PlayingCard {
}
2) 인터페이스 명명규칙: upper camelCase로 선언하기(대문자 사용)
public static final int SPADE=4;
public static int DIAMOND =3;
public final int HEART = 2;
int CLOVER = 1;
다음과 같이 명명할 시에는 UpperCameCase로 선언해 주어야 하며, 인터페이스에는 상수만 들어갈 수 있다.
3) Implements(구현하다)
Class에서 Interface를 활용하고자 할 때에는 다음과 같이 활용한다.
class 클래스명 implements 인터페이스명
class Card implements PlayingCard {
}
4) 인터페이스(Interface)에서 메서드(Method) 활용법
'default를 필수적으로 사용해야한다.
default void defaultMethod(){
System.out.println("Default Method");
}
만약 다음과 같이 default를 생략하게 된다면 오류가 뜨게 된다.

5) 인터페이스 구현 방법
class Card implements PlayingCard {
private String cardNumber;
private String cardkind;
Card(String cardNumber, String cardkind) {
this.cardNumber = cardNumber;
this.cardkind = cardkind;
}//인터페이스 안의 추상메서드를 구현한 클래스 메서드는 public지정이 필수적이다
@Override
public String getCardNumber() {
return cardNumber;
}
@Override
public String getCardKind() {
return cardkind;
}
//default method 재정의
@Override
public void defaultMethod(){
System.out.println("card class에서 재정의된 default 메서드");
}
}
6) 예제- 인터페이스를 활용한 Main Method
public class B_Interface {
public static void main(String[] args) {
PlayingCard.Card card = new PlayingCard.Card("7","HEART");
System.out.println(card.getCardNumber());
System.out.println(card.getCardKind());
card.defaultMethod();
PlayingCard.staticMethod();
System.out.println(PlayingCard.CLOVER);
System.out.println(PlayingCard.HEART);
System.out.println(PlayingCard.DIAMOND);
}
}
'웹개발 > JAVA' 카테고리의 다른 글
| API -JavaTime Package (1) | 2025.03.02 |
|---|---|
| API - Java.lang Package (2) | 2025.03.01 |
| 추상화(Abstract)-abstract class (0) | 2025.02.27 |
| 클래스 형(ClassType)변환 (0) | 2025.02.26 |
| Collection- Map Interface (0) | 2025.02.25 |