Loading...

JAVA/실습 / / 2022. 1. 17. 09:07

오버라이딩 실습

반응형
package ex11;

class 동물 {
    String name = "동물";
    int hp = 0;
    int attack = 0;

    String animalName() {
        return name;
    }

    int animalHp() {
        return hp;
    }

    int animalAttack() {
        return attack;
    }

    int attackedHp(int damage) {
        return hp;
    }
}

class 사자 extends 동물 {
    String name = "사자";
    int hp = 100;
    int attack = 10;

    String animalName() {
        return name;
    }

    int animalHp() {
        return hp;
    }

    int animalAttack() {
        return attack;
    }

    int attackedHp(int damage) {

        hp = hp - damage;
        return hp;
    }
}

class 호랑이 extends 동물 {
    String name = "호랑이";
    int hp = 100;
    int attack = 15;

    String animalName() {
        return name;
    }

    int animalHp() {
        return hp;
    }

    int animalAttack() {
        return attack;
    }

    int attackedHp(int damage) {

        hp = hp - damage;
        return hp;
    }
}

class 곰 extends 동물 {
    String name = "곰";
    int hp = 100;
    int attack = 50;

    String animalName() {
        return name;
    }

    int animalHp() {
        return hp;
    }

    int animalAttack() {
        return attack;
    }

    int attackedHp(int damage) {

        hp = hp - damage;
        return hp;
    }
}

public class ExtendsEx02 {

    // 오버라이딩 = 무효화 하다 -> 아래로 타고 내려가는 기법
    static void attack(동물 u1, 동물 u2) {

        System.out.println(u2.animalName() + "(이)가 공격당하고 있습니다.");
        System.out.println(u2.animalName() + "의 hp : " + u2.attackedHp(u1.animalAttack()));
    }

    public static void main(String[] args) {
        동물 lion = new 사자();
        동물 tiger = new 호랑이();
        동물 bear = new 곰();

        attack(lion, tiger);
        attack(lion, tiger);
        attack(lion, tiger);
        attack(lion, bear);
        attack(tiger, lion);
        attack(tiger, bear);
        attack(bear, lion);
        attack(bear, tiger);
    }
}
반응형