조건에 맞는 기능 구현
방법1 각각의 무기를 따로 클래스에 부여
// 조건 : 전사객체를 만들고 순서대로 칼, 창, 지팡이로 공격하게 해주세요.
// 단 : 전사는 무기라는 것이 존재한다는 것은 알지만 칼, 창, 지팡이에 대해선 몰라야 합니다.
class Main {
public static void main(String[] args) {
// 구현 시작
전사 a전사 = new 칼전사();
a전사.공격();
전사 b전사 = new 창전사();
b전사.공격();
전사 c전사 = new 지팡이전사();
c전사.공격();
전사 d전사 = new 전설의지팡이전사();
d전사.공격();
}
}
/* 구현 시작 */
abstract class 전사{
무기 a무기;
void 공격(){
a무기.작동();
}
}
class 칼전사 extends 전사{
칼전사 (){
a무기 = new 칼();
}
}
class 창전사 extends 전사{
창전사 (){
a무기 = new 창();
}
}
class 지팡이전사 extends 전사{
지팡이전사 (){
a무기 = new 지팡이();
}
}
class 전설의지팡이전사 extends 전사{
전설의지팡이전사 (){
a무기 = new 전설의지팡이();
}
}
abstract class 무기{
int 데미지;
String 무기명;
무기() {
무기명 = "";
데미지 = 0;
}
void 작동(){
System.out.println(무기명+"(으)로 공격합니다.");
System.out.println("데미지 : "+데미지+"\n");
}
}
class 칼 extends 무기{
칼(){
무기명 = "칼";
데미지 = 78;
}
}
class 창 extends 무기{
창(){
무기명 = "창";
데미지 = 80;
}
}
class 지팡이 extends 무기{
지팡이(){
무기명 = "지팡이";
데미지 = 12;
}
}
class 전설의지팡이 extends 무기{
전설의지팡이(){
무기명 = "전설의지팡이";
데미지 = 120;
}
}
/* 구현 끝 */
방법2 전사에게 무기를 쥐어주는 방식
class Main {
public static void main(String[] args) {
// 구현 시작
전사 a전사 = new 전사();
a전사.a무기 = new 칼();
a전사.공격();
a전사.a무기 = new 창();
a전사.공격();
a전사.a무기 = new 지팡이();
a전사.공격();
a전사.a무기 = new 전설의지팡이();
a전사.공격();
}
}
/* 구현 시작 */
class 전사{
무기 a무기;
void 공격(){
a무기.작동();
}
}
abstract class 무기{
int 데미지;
String 무기명;
무기() {
무기명 = "";
데미지 = 0;
}
void 작동(){
System.out.println(무기명+"(으)로 공격합니다.");
System.out.println("데미지 : "+데미지+"\n");
}
}
class 칼 extends 무기{
칼(){
무기명 = "칼";
데미지 = 78;
}
}
class 창 extends 무기{
창(){
무기명 = "창";
데미지 = 80;
}
}
class 지팡이 extends 무기{
지팡이(){
무기명 = "지팡이";
데미지 = 12;
}
}
class 전설의지팡이 extends 무기{
전설의지팡이(){
무기명 = "전설의지팡이";
데미지 = 120;
}
}