[Java] 55. 오버라이딩의 한계

백하림's avatar
Feb 14, 2025
[Java] 55. 오버라이딩의 한계
package ex05.ch04; class Protoss { int getHp() { return 3842; } int getPower() { return 3842; } void setHp(int hp) { } void setPower(int power) { } void attack(Protoss unit) { } } class River extends Protoss { int hp; int power; public River() { this.hp = 100; this.power = 50; } int getHp() { return hp; } int getPower() { return power; } void setHp(int hp) { this.hp = hp; } void setPower(int power) { this.power = power; } // 기존 오브젝트 수정 public void attack(Protoss unit) { // 1. 맞는 놈의 hp를 변경 unit.setHp(unit.getHp() - this.power); } } class Dragoon extends Protoss { int hp; int power; public Dragoon() { this.hp = 100; this.power = 10; } int getHp() { return hp; } int getPower() { return power; } void setHp(int hp) { this.hp = hp; } void setPower(int power) { this.power = power; } // 기존 오브젝트 수정 public void attack(Protoss unit) { // 1. 맞는 놈의 hp를 변경 unit.setHp(unit.getHp() - this.power); } } // Close class Zealot extends Protoss { // 추상화 int hp; int power; public Zealot() { this.hp = 100; this.power = 20; } int getHp() { return hp; } int getPower() { return power; } void setHp(int hp) { this.hp = hp; } void setPower(int power) { this.power = power; } // 기존 오브젝트 수정 public void attack(Protoss unit) { // 1. 맞는 놈의 hp를 변경 unit.setHp(unit.getHp() - this.power); } } // Open class DarkTempler extends Protoss { int hp; int power; public DarkTempler() { this.hp = 100; this.power = 20; } int getHp() { return hp; } int getPower() { return power; } void setHp(int hp) { this.hp = hp; } void setPower(int power) { this.power = power; } // 기존 오브젝트 수정 public void attack(Protoss unit) { //DIP // 1. 맞는 놈의 hp를 변경 unit.setHp(unit.getHp() - this.power); } } public class StarGame { public static void main(String[] args) { Protoss z1 = new Zealot(); Protoss z2 = new Zealot(); Protoss d1 = new Dragoon(); z1.attack(d1); System.out.println(d1.getHp()); // 80 z1.attack(z2); System.out.println(z2.getHp()); // 80 } }
notion image
Share article

harimmon