Java - 오버로딩, 오버라이딩, 인터페이스
public class Dragoon implements StarcraftUnit {
String name = "드라군";
@Override
public String getName() {
return name;
}
}
public class Hydra implements StarcraftUnit {
String name = "히드라";
@Override
public String getName() {
return name;
}
}
public class Zealot implements StarcraftUnit {
String name = "질럿";
@Override
public String getName() {
return name;
}
}
public class MainApp {
//z -> d 공격
static void attack(StarcraftUnit u1, StarcraftUnit u2) {
System.out.println(u1.getName()+"이 "+u2.getName()+"을 공격하였습니다.");
}
// // 오버로딩의 한계 //d -> z 공격
// static void attack(Dragoon u1, Zealot u2) {
// System.out.println(u1.name+"이 "+u2.name+"을 공격하였습니다.");
// }
public static void main(String[] args) {
Zealot z1 = new Zealot();
Dragoon d1 = new Dragoon();
attack(z1, d1);
attack(d1, z1);
}
}
interface StarcraftUnit {
public String getName();
}