IT/JAVA

인터페이스

iamhyeon 2024. 9. 24. 13:00

 

< 인터페이스 >

 

- 추상메서드만을 정의하고 있는 특수한 형태의 클래스

- 인터페이스 안에 포함되는 메서드는 모두 추상메서드뿐이므로 abstract 키워드를 생략할 수 있다

- 추상 메서드(본문이 없는 메서드)의 모음이다. 이는 클래스가 제공해야 하는 메서드를 정의하는 청사진 역할을 한다

 

- implements 키워드를 사용하여 상속 받는다.
- 인터페이스는 다중 상속이 가능하다.  -->  다형성
- 클래스와 인터페이스를 함께 상속할 경우 클래스 상속구문 뒤인터페이스 상속구문을 명시한다

public class Monster extends Unit implemets IMove, IFight {
}

 

- 인터페이스를 상속받은 클래스는 인터페이스에 선언된 모든 메서드에 대해 구체적인 구현을 제공해야 한다

▽ 예)

/**
 * 게임 중 캐릭터가 구현해야 하는 이동 관련 기능 나열
 */
 
public interface IMove {
    public void walk();
    public void run();
    public void jump();
}

 

public class Monster extends Unit implements IMove, IFight {

    public Monster(String name, int hp, int speed, int dps) {
        super(name, hp, speed, dps);
    }

    @Override
    public void walk() {
        System.out.printf("[Monster]  %s가 주변을 배회\n", this.getName());
    }

    @Override
    public void run() {
        System.out.printf("[Monster]  %s가 주변을 뛰면서 배회\n", this.getName());
    }

    @Override
    public void jump() {
        System.out.printf("[Monster]  %s가 주변에서 점프\n", this.getName());
    }
}

 


ex )

plantuml

 

@startuml Overview 
 
interface 이동 { 
    +걷기(): void 
    +달리기(): void 
    +점프(): void 

 
interface 전투 { 
    +공격(): void 
    +방어(): void 
    +회피(): void 

 
interface 기본동작 { 
    +아이템획득(): void 
    +NPC대화(): void 

 
(2) copyright©이광호강사 (leekh4232@gmail.com)
class Unit { 
    -이름: String 
    -체력: int 
    -속도: int 
    -공격력: int 
    ---- 
    +Unit(이름: String, 체력: int, 속도: int, 공격력 int) 
    ---- 
    +get이름(): String 
    +set이름(이름: String): void 
    +get체력(): int 
    +set체력(체력: int): void 
    +get속도(): int 
    +set속도(속도: int): void 
    +get공격력(): int 
    +set공격력(공격력: int): void 
    +toString(): void 

 
class 주인공 {} 
 
class 몬스터 {} 
 
주인공 --|> Unit 
주인공 --|> 이동 
주인공 --|> 전투 
주인공 --|> 기본동작 
 
몬스터 --|> Unit 
몬스터 --|> 이동 
몬스터 --|> 전투 
 
@enduml

 

'IT > JAVA' 카테고리의 다른 글

Helper  (0) 2024.09.26
패키지와 라이브러리  (0) 2024.09.25
예외처리  (0) 2024.09.25
static  (0) 2024.09.24
입출력  (0) 2024.09.10