JAVA_coding_15

AMJ·2023년 3월 6일
0

code_log_java

목록 보기
17/29

구성(전사는 무기로 구성된다.)을 사용하여 중복을 제거


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 => 사용 메서드는 슬프게도 리모콘 버튼용으로만 쓰인다.

profile
재미있는 것들

0개의 댓글