인터페이스
문제 1: 기본적인 인터페이스 구현
public class Main {
public static void main(String[] args) {
Printer printer = new ConsolePrinter();
printer.print("Hello World!");
}
}
public class ConsolePrinter implements Printer {
@Override
public void print(String message) {
System.out.println(message);
}
}
public interface Printer {
void print(String message);
}
문제 2: 다중 구현 연습
public class Main {
public static void main(String[] args) {
GameObject obj = new GameObject();
obj.move(2, -5);
obj.draw();
}
}
public interface Drawable {
void draw();
}
public interface Movable {
void move(int x, int y);
}
public class GameObject implements Movable, Drawable {
int x;
int y;
@Override
public void move(int x, int y) {
this.x += x;
this.y += y;
}
@Override
public void draw() {
System.out.println("객체가 (" + x + ", " + y + ") 에 그려졌습니다.");
}
}
문제 3: 인터페이스를 통한 기능 확장
public class AdvancedCalculator implements Calculator, Multiplicable {
@Override
public int add(int a, int b) {
return a + b;
}
@Override
public int subtract(int a, int b) {
return a - b;
}
@Override
public int multiply(int a, int b) {
return a * b;
}
}
public class BasicCalculator implements Calculator {
@Override
public int add(int a, int b) {
return a + b;
}
@Override
public int subtract(int a, int b) {
return a - b;
}
}
public interface Calculator {
int add(int a, int b);
int subtract(int a, int b);
}
public interface Multiplicable {
int multiply(int a, int b);
}
문제 4: 인터페이스를 이용한 전략 교체 (Strategy Pattern 맛보기)
public class Main {
public static void main(String[] args) {
Character character = new Character();
character.setAttackStrategy(new BowAttack());
character.performAttack();
character.setAttackStrategy(new SwordAttack());
character.performAttack();
}
}
public interface Attackable {
void attack();
}