package ch07;
public class Ch0708
{
public static void main(String[] args)
{
//인터페이스 예제.. Terran.java, Zerg.java, Protoss.java 포함.
//Unit unit = new Unit(); //안될경우 2가지 : 추상클래스거나 인터페이스
// Unit marin = new Terran();
// marin.attackUpgrade();
// marin.print();
Unit unit[] = new Unit[] {new Terran(), new Zerg(), new Protoss()};
for(int i=0;i<unit.length;i++)
{
unit[i].attackUpgrade();
unit[i].defenseUpgrade();
unit[i].shieldUpgrade();
unit[i].print();
}
}
}
**** Unit.java ******
package ch07;
public interface Unit
{
//인터페이스 : 오로지 추상메서드만 가질 수 있으며
// 멤버변수, 멤버함수는 가질 수 없다.
// 그러나 클래스처럼 계승시킬 수 있는 성격을
// 가지며 인터페이스의 계승은 클래스의 상속과
// 다르게 다중상속이 허용된다.
// public int attack; //안됨..
// public int defence; //안됨..
//public void sayHello(){} //안됨
//public abstract void sayHello(); //작동됨.
//public void sayHello(); //abstract이 자동으로 작동되어.
//final int a=10;
//가상으로 starcraft라 생각하고.
public void attackUpgrade();
public void defenseUpgrade();
public void shieldUpgrade();
public void print();
}
**** Terran.java *****
package ch07;
//인터페이스의 상속은 implements를 사용한다.
public class Terran implements Unit
{
public int attack;
public int defense;
public void attackUpgrade()
{
// TODO 자동 생성된 메소드 스텁
attack+=2;
}
public void defenseUpgrade()
{
// TODO 자동 생성된 메소드 스텁
defense+=1;
}
public void shieldUpgrade()
{
// TODO 자동 생성된 메소드 스텁
}
public void print()
{
// TODO 자동 생성된 메소드 스텁
System.out.println("태란유닛의 공격력 : "+attack+", 방어력 : "+defense);
}
}
***** Zerg.java ******
package ch07;
public class Zerg implements Unit
{
public int attack;
public int defense;
//공격력 +1, 방어력 +1;
public void attackUpgrade()
{
// TODO 자동 생성된 메소드 스텁
attack+=1;
}
public void defenseUpgrade()
{
// TODO 자동 생성된 메소드 스텁
defense+=1;
}
public void shieldUpgrade()
{
// TODO 자동 생성된 메소드 스텁
}
public void print()
{
// TODO 자동 생성된 메소드 스텁
System.out.println("저그유닛의 공격력 : "+attack+", 방어력 : "+defense);
}
}
****** Protoss.java ******
package ch07;
public class Protoss implements Unit
{
public int attack;
public int defense;
public int shield;
//공격력 +1, 방어력 +1, 쉴드 1;
public void attackUpgrade() {
// TODO 자동 생성된 메소드 스텁
attack+=1;
}
public void defenseUpgrade() {
// TODO 자동 생성된 메소드 스텁
defense+=1;
}
public void shieldUpgrade() {
// TODO 자동 생성된 메소드 스텁
shield+=1;
}
public void print()
{
// TODO 자동 생성된 메소드 스텁
System.out.println("프로토스 유닛의 공격력 : "+attack+", 방어력 : "+defense+", 쉴드 : "+shield);
}
}