다음 요구사항에 맞게 클래스 구조 구현 및 객체 생성 후 기능 실행해보세요
요구사항
- 전사(warrior) 클래스
- 아이디를 저장할 수 있어야 합니다
- 레벨을 저장할 수 있어야 합니다(1이상 설정 가능)
- 생성 시 아이디만 설정 가능합니다(레벨은 1로 설정)
- 공격 기능이 있어야 합니다("전사가 칼로 공격합니다!" 출력)
- 이동 기능이 있어야 합니다("전사가 뛰어서 이동합니다!" 출력)
- 정보 출력 기능이 있어야 합니다(아이디와 레벨을 출력)
- 마법사(magician) 클래스
- 아이디를 저장할 수 있어야 합니다
- 레벨을 저장할 수 있어야 합니다(1이상 설정 가능)
- 생성 시 아이디만 설정 가능합니다(레벨은 1로 설정)
- 공격 기능이 있어야 합니다("마법사가 마법으로 공격합니다!" 출력)
- 이동 기능이 있어야 합니다("마법사가 날아서 이동합니다!" 출력)
- 정보 출력 기능이 있어야 합니다(아이디와 레벨을 출력)
- 엘프(elf) 클래스
- 아이디를 저장할 수 있어야 합니다
- 레벨을 저장할 수 있어야 합니다(1이상 설정 가능)
- 생성 시 아이디만 설정 가능합니다(레벨은 1로 설정)
- 공격 기능이 있어야 합니다("엘프가 활로 공격합니다!" 출력)
- 이동 기능이 있어야 합니다("엘프가 이동합니다!" 출력)
- 정보 출력 기능이 있어야 합니다(아이디와 레벨을 출력)
Player 클래스 (슈퍼 클래스 + 추상 클래스)
package day12_oop.inherit8;
public abstract class Player {
// 멤버 필드
protected String id;
protected int lv;
// getter & setter
public String getId() {
return this.id;
}
public void setId(String id) {
this.id = id;
}
public int getLv() {
return this.lv;
}
public void setLv(int lv) {
if(lv <= 0) {
return;
}
this.lv = lv;
}
// 생성자
public Player(String id) {
this(id, 1);
//this.id = id;
//this.setLv(1);
}
public Player(String id, int lv) {
this.setId(id);
this.setLv(lv);
}
// 메소드
public void information() {
System.out.println("아이디 : " + this.id);
System.out.println("레벨 : " + this.lv);
}
// 추상 메소드
public abstract void attack();
public abstract void move();
}
Warrior 클래스
package day12_oop.inherit8;
public class Warrior extends Player {
// 멤버 필드
// 생성자
public Warrior(String id) {
super(id);
}
// 추상메소드 오버라이딩
@Override
public void attack() {
System.out.println("전사가 칼로 공격합니다!");
}
@Override
public void move() {
System.out.println("전사가 뛰어서 이동합니다!");
}
}
Magician 클래스
package day12_oop.inherit8;
public class Magician extends Player {
// 멤버 필드
// 생성자
public Magician(String id) {
super(id);
}
// 추상메소드 오버라이딩
@Override
public void attack() {
System.out.println("마법사가 마법으로 공격합니다!");
}
@Override
public void move() {
System.out.println("마법사가 날아서 이동합니다!");
}
}
Elf 클래스
package day12_oop.inherit8;
public class Elf extends Player {
// 멤버 필드
// 생성자
public Elf(String id) {
super(id);
}
// 추상메소드 오버라이딩
@Override
public void attack() {
System.out.println("엘프가 활로 공격합니다!");
}
@Override
public void move() {
System.out.println("엘프가 이동합니다!");
}
}
메인 메소드
package day12_oop.inherit8;
public class Test01 {
public static void main(String[] args) {
// 객체 생성
Warrior a = new Warrior("전사");
Magician b = new Magician("마법사");
Elf c = new Elf("엘프");
// 메소드 출력
a.information();
a.attack();
a.move();
b.information();
b.attack();
b.move();
c.information();
c.attack();
c.move();
}
}
'국비교육 > 국비교육 복습' 카테고리의 다른 글
day13_oop.multi2 : 인터페이스를 이용한 다중 상속 구현 (★) (0) | 2022.08.14 |
---|---|
day13_oop.poly2 : 다형성(polymorphism) + 업 캐스팅(up casting) (★) (0) | 2022.08.14 |
day12_oop.inherit6 : 추상 클래스(abstract class)와 추상 메소드(abstract method) (★) (0) | 2022.08.14 |
day12_oop.inherit5 : 상속받은 클래스로부터 다시 상속을 받는 경우 + 접근제한 protected (★) (0) | 2022.08.14 |
day12_oop.inherit3 : 슈퍼 클래스로부터의 상속 + 접근제한 protected (★) (0) | 2022.08.14 |