Interface 예제

2023. 7. 14. 17:00JAVA

다음 사진과 같이 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