class Main {
public static void main(String[] args) {
전사타입A a전사타입A = new 전사타입A();
a전사타입A.공격();
전사타입B a전사타입B = new 전사타입B();
a전사타입B.공격();
전사타입C a전사타입C = new 전사타입C();
a전사타입C.공격();
전사타입D a전사타입D = new 전사타입D();
a전사타입D.공격();
}
}
abstract class 전사{
무기 a무기;
String 전사타입;
void 공격() {
a무기.작동(전사타입);
}
}
class 전사타입A extends 전사 {
전사타입A(){
전사타입 = "전사타입A";
a무기 = new 칼();
}
}
class 전사타입B extends 전사 {
전사타입B(){
전사타입 = "전사타입B";
a무기 = new 칼();
}
}
class 전사타입C extends 전사 {
전사타입C(){
전사타입 = "전사타입C";
a무기 = new 활();
}
}
class 전사타입D extends 전사 {
전사타입D(){
전사타입 = "전사타입D";
a무기 = new 활();
}
}
abstract class 무기 {
String 무기명;
무기(){
무기명="";
}
void 작동(String 사용자명){
System.out.println(사용자명+"가 "+무기명+"(으)로 공격");
}
}
class 칼 extends 무기{
칼(){
무기명="칼";
}
}
class 활 extends 무기{
활(){
무기명="활";
}
}
abstract class 무기
=> 무기 클래스는 아쉽게도 new 무기();
될 일은 없고 리모콘 제작용으로만 쓰인다.
abstract
=> 사용 메서드는 슬프게도 리모콘 버튼용으로만 쓰인다.