JAVA_coding_12

AMJ·2023년 3월 6일
0

code_log_java

목록 보기
14/29
class Main {
    public static void main(String[] args) {
        전사타입A a전사타입A = new 전사타입A();
        a전사타입A.공격();

        전사타입B a전사타입B = new 전사타입B();
        a전사타입B.공격();

    }
}

변경前 - 추가,수정 시 불편

class 전사 {
}

class 전사타입A extends 전사 {
    void 공격() {
        new 칼().작동();
    }
}

class 전사타입B extends 전사 {
    void 공격() {
        new 칼().작동();
    }
}


class 칼 {
    void 작동() {
        System.out.println("칼로 공격");
    }
}

class 활 {
    void 작동() {
        System.out.println("활로 공격");
    }
}
  • 전사타입에 따른 객체 일회성

변경 後 2개 class 생성

캐릭터 - 직업(전사) - 무기(활,칼)

class Main {
    public static void main(String[] args) {
        전사타입A a전사타입A = new 전사타입A();
        a전사타입A.공격();

        전사타입B a전사타입B = new 전사타입B();
        a전사타입B.공격();
    }
}

abstract class 전사 {
    무기 a무기;
    void 공격() {
        a무기.작동();
    }
}

class 전사타입A extends 전사 {
    전사타입A (){
        a무기 = new 활();
    }
}
class 전사타입B extends 전사 {
    전사타입B (){
        a무기 = new 칼();
    }
}
abstract class 무기{
    String 무기;
    무기 (){
        무기 ="";
    }
    void 작동(){
        System.out.println(무기+"로 공격");
    }
}
class 칼 extends 무기{
    칼 (){
        무기 ="칼";
    }
}
class 활 extends 무기{
    활 (){
        무기 ="활";
    }
}
profile
재미있는 것들

0개의 댓글