★ 인터페이스(Interface) ★ :변수 선언은 되지만 객체 못 만듦.
: 추상 클래스와 거의 비슷한 메커니즘(추상클래스와 동일한 처리가 가능함.)
: 인터페이스 선언은 (class) 대신 (interface)를 사용하는 것.
: 필드>> public, static, final / 메소드>>abstract 제한자를 붙인것과 마찬가지
: 인터페이스 필드는 상수 / 메소드는 추상메소드 인 셈
: 필드변경 불가. 메소드 몸체 못 만듦.
: 객체 만들지 못함.(new 연산자 사용안됨.)
: 인터페이스구현(implementation)은 클래스와 조합 사용하는 행위
public class Main {
public static void main(String[] args) {
//팀장이 인터페이스를 설계하고 추상메소드의 이름을 정하면
//팀원들을 그 이름을 토대로 기능을 구현하여 클래스를 설계/
//팀장: Unit인터페이스- 유닛이라면 가져야 할 필수 기능의 이름을 정함 (공격,이동기능)
//팀원1: Marine 클래스 설계 및 unit 구현
//팀원2: Tank 클래스 설계 및 unit 구현
//팀원3: Race 클래스 설계 및 unit 구현
//팀장은 만들어진 클래스를 이용하여 객체생성 및 게임 알고리즘을 코딩
Unit[] units =new Unit[5];
//유닛들 추가
units[0]=new Marine();
units[1]= new Tank();
units[2]=new Race();
units[3]=new Marine();
units[4]=new Tank();
//유닛들의 기능을 사용
for(int i=0; i<units.length; i++) {
units[i].move();
units[i].attack();
// if(units[i] instanceof Marine) {
// Marine m=(Marine)units[i];
// m.levelUp();
// }else if(units[i] instanceof Tank) {
// Tank t =(Tank)units[i];
// t.levelUp();
// }
if(units[i] instanceof LevelUpAble) {
LevelUpAble obj=(LevelUpAble)units[i];
obj.levelUp();
}
System.out.println();
}
}
}
----------------------------------------------------------------------------------------
public interface Unit {
//추상메소드
public abstract void attack();
void move(); //자동 public abstract
}
------------------------------------------------------------------------------------------
public interface LevelUpAble {
public abstract void levelUp();
}
------------------------------------------------------------------------------------------
import javax.swing.UIDefaults.LazyValue;
public class Marine implements Unit,LevelUpAble{
@Override
public void move() {
// TODO Auto-generated method stub
System.out.println("걸어서 이동..");
}
@Override
public void attack() {
// TODO Auto-generated method stub
System.out.println("총알 발사..");
}
@Override
public void levelUp() {
// TODO Auto-generated method stub
System.out.println("불꽃 마린으로 ..변신");
}
}
-------------------------------------------------------------------------------------------
public class Race implements Unit{
@Override
public void attack() {
// TODO Auto-generated method stub
System.out.println("미사일 발사~~~");
}
@Override
public void move() {
// TODO Auto-generated method stub
System.out.println("날아서 이동~~~");
}
}
-------------------------------------------------------------------------------------------
public class Tank implements Unit,LevelUpAble{
@Override
public void move() {
// TODO Auto-generated method stub
System.out.println("바퀴로 이동..");
}
@Override
public void attack() {
// TODO Auto-generated method stub
System.out.println("자주포 발사!!");
}
@Override
public void levelUp() {
// TODO Auto-generated method stub
System.out.println("미친탱크");
}
}
'JAVA' 카테고리의 다른 글
예외처리: try-catch-finally, throws, throw (0) | 2023.07.15 |
---|---|
Object 클래스: 모든 클래스의 (최상위) (0) | 2023.07.15 |
추상클래스(abstract), 익명클래스 (0) | 2023.07.15 |
연산자(Operator) (0) | 2023.07.15 |
변수(Variable), 변수타입(Variable Type), 상수(Constant), 리터럴(literal) (0) | 2023.07.15 |