- [Java] 44. 다형성 활용: 스타크래프트 소스 코드 수정하기2024년 04월 24일
- Song hyun
- 작성자
- 2024.04.24.:26
728x90반응형함께 보면 좋을 글:
(1) Java로 스타크래프트 모델링하기 (객체 지향 패러다임 응용)
https://whatsthatsound.tistory.com/61
(2) Java로 스타크래프트 모델링하기 (상속, 메서드 오버로딩 개념 응용)
https://whatsthatsound.tistory.com/86
*다형성이란?
https://whatsthatsound.tistory.com/89
앞서 작성하고, 수정한 "스타크래프트 모델링" 소스 코드를 다형성을 활용해 발전시켜보고자 한다.
Java 프로그래밍의 특징인 다형성을 활용하면, 기존의 소스 코드들을 더욱 간단히 작성할 수 있다.
먼저 질럿/마린/저글링의 부모 클래스인 유닛을 살펴보면, 중복되는 메서드를 찾아볼 수 있다.
바로 attack 메서드이다.
기존의 attack 메서드는 공격하는 대상에 따라, 입력받는 참조 변수의 형태가 달랐다. (Zealot/Marine/Zergling)
하지만 Unit이라는 부모 클래스에 질럿/마린/저글링이 상속된 지금은,
상속/다형성이라는 개념을 이용해 더욱 간단히 코드를 작성할 수 있다.
해답은 간단한데, 파라미터에 입력받는 변수의 값을 "Unit"형으로 바꾸기만 하면 된다.
package starcraft.ver04; /** * 접근 제어 지시자 * public * protected * default * private */ public class Unit { protected String name; protected int power; protected int hp; public Unit(String name) { this.name=name; } public String getName() { return name; } public void setName(String name) { this.name = name; } public int getPower() { return power; } public void setPower(int power) { this.power = power; } public int getHp() { return hp; } public void setHp(int hp) { this.hp = hp; } public void showInfo() { System.out.println("=====상태창====="); System.out.println(" 이름: "+this.name); System.out.println(" 공격력: "+this.power); System.out.println(" 생명력: "+this.hp); } public void beAttacked(int power) { if (hp <= 0) { System.out.println("[" + this.name + "]은 이미 사망했습니다."); hp = 0; return; } hp -= power; } public void attack(Unit u) { System.out.println("[" + this.name + "]가 "+u.name+"를 공격합니다."); beAttacked(this.power);} }
728x90반응형'Java > 기본 개념 및 클래스' 카테고리의 다른 글
[Java] 46. 추상 클래스 (0) 2024.04.24 [Java] 45. 배열, 업/다운 캐스팅, 다형성 활용 : 인형 뽑기 프로그램 만들기 (0) 2024.04.24 [Java] 43. 다형성과 캐스팅 (0) 2024.04.24 [Java] 42. 연관 관계 활용: 학생과 학급 클래스 만들기 (0) 2024.04.24 [Java] 41. 연관 관계와 의존 관계 (0) 2024.04.23 다음글이전글이전 글이 없습니다.댓글
스킨 업데이트 안내
현재 이용하고 계신 스킨의 버전보다 더 높은 최신 버전이 감지 되었습니다. 최신버전 스킨 파일을 다운로드 받을 수 있는 페이지로 이동하시겠습니까?
("아니오" 를 선택할 시 30일 동안 최신 버전이 감지되어도 모달 창이 표시되지 않습니다.)