java 추상클래스

java 추상클래스

작성일 2023.02.09댓글 1건
    게시물 수정 , 삭제는 로그인 필요

사진에서 주황색부분을 위 순서부터 마법사, 마법사, 얼음마법사, 얼음마법사, 얼음지팡이로 바꾸고 싶은데 코드를 어떻게 수정해야 할까요??

반나절 넘게 구글링하는데도 모르겠네요...

아시는 분 가능한 빨리 알려주시면 감사하겠습니다ㅜ











----------------------------------------------------------------------------------------------사진이 잘 보이실까봐 코드도 올립니다.

public class Task22{
public static <마법사> void main(String[] args) {
캐릭터 a전사 = new 캐릭터();
캐릭터 a마법사 = new 캐릭터();
캐릭터 a얼음마법사 = new 캐릭터();

a전사.power = 10;
a마법사.power = 5;
a얼음마법사.power = 5;

a전사.공격();
//출력 : 전사(이)가 칼(으)로 공격합니다.
//출력 : // 데미지 : 전사 기본공격력(10) * 칼 공력력(20) => 200
a전사.set무기(new 활());
a전사.공격();
// 출력 : 전사(이)가 활(으)로 공격합니다.
        // 출력 : 데미지 : 전사 기본공격력(10) * 활 공격력(100) => 1000 
a마법사.set무기(new 불지팡이());
a마법사.공격();
// 출력 : 마법사(이)가 불지팡이(으)로 공격합니다.
// 출력 : 데미지 : 마법사가 기본공격력(5) * 불지팡이 공격력(50) => 250
a얼음마법사.공격();
// 출력 : 마법사(이)가 얼음지팡이(으)로 공격합니다.
// 출력 : 데미지 : 마법사 기본공격력(5) * 얼음지팡이 공격력(60) => 300
}
}
//ㅋㅋㅋㅋㅋㅋㅋㅋㅋㅋㅋㅋㅋㅋㅋㅋㅋㅋㅋㅋㅋㅋㅋㅋㅋㅋㅋㅋㅋㅋㅋㅋㅋㅋㅋㅋㅋㅋㅋ
class 캐릭터 {
무기 weapon;
int power;
캐릭터 () {
this.weapon = new 칼();
}
void 공격() {
weapon.작동(power);
}
public void set무기(무기 newWaeapon) {
this.weapon = newWaeapon;
}
}

abstract class 무기 {
int weaponPower;
String weaponType;
void 작동(int warriorPower) {
System.out.println("전사(이)가 %s(으)로 공격합니다.\n", weaponType);
System.out.println("데미지 : 전사 기본공격력(%d) * %s 공격력(%d) => %d\n", warriorPower, weaponType, weaponPower, warriorPower*weaponPower);
}
}
//ㅋㅋㅋㅋㅋㅋㅋ
class 칼 extends 무기 {
칼() {
this.weaponPower = 20;
this.weaponType = "칼";
}
}

class 활 extends 무기 {
활() {
this.weaponPower = 100;
this.weaponType = "활";
}
}

class 불지팡이 extends 무기 {
불지팡이() {
this.weaponPower = 50;
this.weaponType = "불지팡이";
}
}

class 얼음지팡이 extends 무기 {
얼음지팡이() {
this.weaponPower = 50;
this.weaponType = "얼음지팡이";
}
}


#java 추상클래스 #java 추상클래스 인터페이스 #java 추상클래스 사용 이유 #java 추상클래스 생성자 #java 추상클래스 인터페이스 차이 #java 추상클래스 예제 #java 추상클래스 상속 #java 추상클래스 변수 #java 추상클래스 객체생성 #java 추상클래스 구현

profile_image 익명 작성일 -

OOP 별거 없습니다. 현실의 사물을 그대로 코드로 추상화 하시면 됩니다.

현실에서 무기를 각 종류별로 분류하듯 그대로로 분류하여 클래스를 정의하고 상속해 보세요.

무기 <-- 칼 <-- 숏스워드 <-- 롱스워드 <-- 활 <-- 롱보우 <-- 헌팅보우 <-- 크로스 보우 <-- 스태프(마법지팡이) <-- 불 지팡이 <-- 얼음 지팡이

그리고 무기는 무기혼자 동작하는 게 아니라 인간이 들고서(장착) 동작 하는 게 맞습니다.

제가 예전에 만들어 봤던 코드인데 참고해 보세요.

// 판타지 캐릭터 추상 abstract class Character { WeaponBehavior weapon; void setWeapon(WeaponBehavior w) { this.weapon = w; } abstract void fight(); } // 인터페이스 무기를 사용하는 방법 interface WeaponBehavior { void useWeapon(); } // 검을 사용하기 class SwardBehavior implements WeaponBehavior { @Override public void useWeapon() { System.out.println("검을 휘두르다."); } } // 활을 사용하다. class BowAndArrowBehavior implements WeaponBehavior { @Override public void useWeapon() { System.out.println("활을 써서 화살을 발사하다"); } } //도끼를 사용하다. class AxeBehavior implements WeaponBehavior { @Override public void useWeapon() { System.out.println("도끼를 내리 찍다"); } } // 기사 클래스 class Knight extends Character { public Knight() { this.weapon = new SwardBehavior(); // 검 사용법 장착 } @Override void fight() { System.out.print("기사는 다음과 같이 공격합니다 ->"); weapon.useWeapon(); } } //엘프 클래스 class Elf extends Character { public Elf() { this.weapon = new BowAndArrowBehavior(); // 활 사용법 장착 } @Override void fight() { System.out.print("엘프는 다음과 같이 공격합니다 ->"); weapon.useWeapon(); } } // 드워프 클래스 class Dwarf extends Character { public Dwarf() { this.weapon = new AxeBehavior(); // 도끼 사용법 장착 } @Override void fight() { System.out.print("드워프는 다음과 같이 공격합니다 ->"); weapon.useWeapon(); } } public class FantasyCharacterEx { public static void main(String[] args) { Character[] fanCharacter = new Character[3]; fanCharacter[0] = new Knight(); fanCharacter[1] = new Elf(); fanCharacter[2] = new Dwarf(); for(int i = 0; i < fanCharacter.length; i++) { fanCharacter[i].fight(); } } }

선생님들 java 추상 클래스 선언 관련...

... 굳이 있을 필요는 없으나, 문제의 foo 메소드는 void foo(); 와 같이 세미콜론으로 닫긴 추상클래스입니다. void foo(){ ... }와 같이 구현부가 있으면 추상메소드가 아닙니다.

JAVA(자바)추상 클래스와...

... ecm.sayHello(); } } Empty.java(추상클래스) public abstract class EmptyCan{ public abstract void sound();//몸체없음 public abstract void who();//몸체 없음 } C:\examples\5. Class for...

JAVA 추상클래스 abstract 질문좀...

... JAVA 고수님들 설명좀 부탁드립니다! 추상클래스는 인터페이스와 다르게 일반 변수와 일반 메소드를 가질 수 있습니다. 하지만...

JAVA 추상클래스 예제

... ⑥ 클래스 A가 추상 클래스가 아니고 method1()이 구현되었다면 위의 코드는 컴파일되지 않을 것이다. 안녕하세요. 1번, 3번, 5번

JAVA 추상클래스 예제

다음 중 바른 추상 메소드 또는 추상 클래스는 어느 것인가? ① private abstract int min(int a, int b); ② final abstract int max(int a, int b)...

추상클래스 생성자 관련질문입니다(java)

... 다음 사진을 보시면 Phone.java라는 추상클래스와 그에따른 실체,실행클래스(이 예제는 추상클래스 선언 예제) 그리고 Animal.java 추상클래스와 그에따른 자식클래스...