Interface 예제
2023. 7. 14. 17:00ㆍJAVA

다음 사진과 같이 Marine, Tank, Race라는 유닛을 만들고 공통된 기능으로는 attack과 move를
만들고 level up 기능은 Marine과 Race에만 넣어보고 각 기능들을 출력해보는 예제를 만들어 볼것이다
public interface Unit {
public abstract void attack();
public abstract void move();
}
일단 모든 유닛에 공통으로 들어가는 기능을 가진 인터페이스를 만들었다
public interface LevelUpAble {
public abstract void levelUp();
}
이것은 레벨업 기능을 가진 Marine과 Race에만 상속할 인터페이스이다
public class Marine implements Unit,LevelUpAble{
public void attack() {
System.out.println("탕탕탕~");
}
public void move() {
System.out.println("뛰어가는중~");
}
@Override
public void levelUp() {
// TODO Auto-generated method stub
System.out.println("슈퍼 총 장착~");
}
}
public class Race implements Unit,LevelUpAble{
public void attack() {
System.out.println("미사일 발사!!");
}
public void move() {
System.out.println("비행하는중~");
}
public void levelUp() {
System.out.println("슈퍼 전투기~");
}
}
Marine과 Race는 Unit, LevelUpAble 인터페이스를 상속받아 attack, move,levelUp 메소드를 오버라이드 했다
public class Tank implements Unit{
public void attack() {
System.out.println("포탄 발사!!");
}
public void move() {
System.out.println("탱크 바퀴 구르는중");
}
}
Tank는 Unit 인터페이스를 상속받아 attack, move 메소드를 오버라이드 했다
public class Main {
public static void main(String[] args) {
Marine m = new Marine();
Tank t = new Tank();
Race r = new Race();
Unit[] u = new Unit[3];
u[0] = m;
u[1] = t;
u[2] = r;
for (int i = 0; i < u.length; i++) {
u[i].attack();
u[i].move();
if (u[i] instanceof LevelUpAble) {
LevelUpAble l = (LevelUpAble) u[i];
l.levelUp();
}
}
}
}
각각의 클래스를 선언해준뒤 3칸짜리 Unit 배열을 만든뒤 각각 대입했다 반복문으로 각각의 기능을 출력하기 위해
공통적으로 attack();과 move(); 메소드를 사용했고
if문을 사용 instanceof 를 이용해 LevelUpAble을 부모로둔 객체들만 levelUp();기능을 사용해주었다
탕탕탕~
뛰어가는중~
슈퍼 총 장착~
포탄 발사!!
탱크 바퀴 구르는중
미사일 발사!!
비행하는중~
슈퍼 전투기~
메인 클래스를 실행하면 다음과같은 결과가 나온다는것을 알수있다
'JAVA' 카테고리의 다른 글
| Java 고급 문법 - Collection 클래스들 (0) | 2023.07.18 |
|---|---|
| Generic (0) | 2023.07.18 |
| Interface (0) | 2023.07.14 |
| Abstract (0) | 2023.07.14 |
| Polymorphism(다형성)예제 (0) | 2023.07.13 |