🎬 상상해봐
너는 여러 게임 캐릭터를 만들었어.
각각의 캐릭터는 공격을 할 수 있어야 해.
하지만 캐릭터마다 공격 방식이 다를 수 있지.
그럼 어떻게 공격을 통일된 방식으로 할 수 있을까?
인터페이스를 사용해서, 공격 방식에 대한 규칙을 만들면 돼!
🧑⚖️ 1. 인터페이스란?
인터페이스는 행동의 규칙을 정의하는 계약서야.
인터페이스 안에는 구현되지 않은 메서드만 들어가 있어.
그럼 클래스는 이 규칙을 반드시 지켜야 해.
public interface Attackable { // 인터페이스는 메서드만 선언, 구현하지 않음
void attack();
}
Attackable은 공격할 수 있는 행동을 규정하는 인터페이스야.
🛠️ 2. 인터페이스 구현하기
인터페이스는 클래스가 구현해야 해.
클래스가 그 인터페이스를 구현한다고 선언하려면 implements 키워드를 사용해.
public class Hero implements Attackable {
String name;
public Hero(String name) {
this.name = name;
}
@Override
public void attack() {
System.out.println(name + "이(가) 검으로 공격했다!");
}
}
implements Attackable → Hero 클래스는 Attackable 인터페이스의 규칙을 따라 attack() 메서드를 구현해야 해!
🚀 3. 인터페이스 사용하기
public class Main {
public static void main(String[] args) {
Hero hero1 = new Hero("철수");
hero1.attack(); // 철수가 검으로 공격했다!
}
}
Hero 클래스는 이제 Attackable 인터페이스의 규칙에 따라 attack()을 구현했으므로, 공격할 수 있다!
🔄 4. 여러 클래스에서 인터페이스 사용하기
인터페이스는 여러 클래스에서 구현할 수 있어!
다른 클래스에서도 같은 규칙을 따라서 공격을 할 수 있게 되는 거야.
public class Dragon implements Attackable {
String name;
public Dragon(String name) {
this.name = name;
}
@Override
public void attack() {
System.out.println(name + "이(가) 불을 뿜었다!");
}
}
public class Main {
public static void main(String[] args) {
Hero hero1 = new Hero("철수");
Dragon dragon1 = new Dragon("불사조");
hero1.attack(); // 철수가 검으로 공격했다!
dragon1.attack(); // 불사조가 불을 뿜었다!
}
}
Hero와 Dragon은 같은 Attackable 인터페이스를 구현했기 때문에, 공격하기라는 동일한 규칙을 따르면서도 각자 다른 방식으로 공격을 할 수 있어!
🧩 5. 다중 인터페이스 구현
하나의 클래스가 여러 개의 인터페이스를 동시에 구현할 수도 있어.
public interface Flyable {
void fly();
}
public class FlyingDragon implements Attackable, Flyable {
String name;
public FlyingDragon(String name) {
this.name = name;
}
@Override
public void attack() {
System.out.println(name + "이(가) 불을 뿜었다!");
}
@Override
public void fly() {
System.out.println(name + "이(가) 하늘을 난다!");
}
}
public class Main {
public static void main(String[] args) {
FlyingDragon flyingDragon = new FlyingDragon("날아라 불사조");
flyingDragon.attack(); // 날아라 불사조가 불을 뿜었다!
flyingDragon.fly(); // 날아라 불사조가 하늘을 난다!
}
}
FlyingDragon은 Attackable과 Flyable 두 인터페이스를 구현하여, 공격과 비행 두 가지 행동을 할 수 있어!
🧠 정리 타임
인터페이스 | 구현해야 할 메서드의 규칙을 정의 | public interface Attackable { void attack(); } |
implements | 클래스를 인터페이스의 규칙에 맞게 만든다 | public class Hero implements Attackable { ... } |
다중 인터페이스 | 하나의 클래스가 여러 인터페이스를 구현 | public class FlyingDragon implements Attackable, Flyable { ... } |
🎮 실전 미션 – 공격과 비행을 할 수 있는 캐릭터 만들기
public interface Attackable {
void attack();
}
public interface Flyable {
void fly();
}
public class SuperHero implements Attackable, Flyable {
String name;
public SuperHero(String name) {
this.name = name;
}
@Override
public void attack() {
System.out.println(name + "이(가) 슈퍼 공격을 했다!");
}
@Override
public void fly() {
System.out.println(name + "이(가) 하늘을 날았다!");
}
}
public class Main {
public static void main(String[] args) {
SuperHero superHero = new SuperHero("철수");
superHero.attack(); // 철수가 슈퍼 공격을 했다!
superHero.fly(); // 철수가 하늘을 날았다!
}
}
✨ 마무리 요약
인터페이스를 사용하면, 여러 클래스가 공통적으로 해야 할 행동을 규정할 수 있어.
이제 각기 다른 클래스들이 동일한 규칙에 따라 행동하면서, 유연하고 확장성 있는 코드를 만들 수 있게 되었어!
다음 12단원에서는 다형성에 대해 배우게 될 거야.
다형성은 하나의 객체가 여러 형태로 변할 수 있는 능력이야.
이걸 배우면, 코드가 더욱 유연하고 강력해지지!
'IT > java 코딩 기초' 카테고리의 다른 글
1️⃣3️⃣ 예외 처리 – 프로그램을 안전하게 보호하자! 🛡️🚀 (0) | 2025.04.14 |
---|---|
1️⃣2️⃣ 다형성 – 하나의 객체, 여러 형태로 변하다! 🌈✨ (0) | 2025.04.14 |
🔟 상속 – 새로운 능력을 추가하자! 🦸♂️💥 (0) | 2025.04.14 |
9️⃣ 생성자 – 객체 탄생의 순간을 다루는 마법! 🎩✨ (0) | 2025.04.14 |
8️⃣ 클래스와 객체 – 코드로 생명체를 만들자! 🧬🚀 (0) | 2025.04.14 |