부모 클래스인 Hero 만들기
package ch03_1;
public class Hero {
String name;
int hp;
public Hero(String name, int hp) {
this.name = name;
this.hp = hp;
}
// 접근제어 지시자 - protected
// 상속을 받는 자식 클래스들은 접근할 수 있다.
protected void attack() {
System.out.println("기본 공격을 시작합니다.");
}
}
자식 클래스인 Warrior / Archer / Wizard 만들기
package ch03_1;
public class Warrior extends Hero {
// !! 부모 클래스에 사용자 정의 생성자가 있다면
// 자식 클래스에서 반드시 부모 생성자를 먼저 호출해야 한다.
public Warrior(String name, int hp) {
// super < -- 부모를 의미한다.
// System.out.println("asdasdasd"); << 부모가 태어나기 전에 먼저 일할 수 없다.
super(name, hp); // 부모 생성자를 먼저 호출해야한다.
}
public void comboAttack() {
System.out.println("전사가 2단 공격을 합니다.");
}
// 상속에서 오버라이드
@Override // 어노테이션
protected void attack() {
// super.attack(); // super.
System.out.println(super.name + "가 기본 공격을 합니다.");
// 부모(Hero)의 기능인 attack을 자식 클래스에서 재정의
}
}
package ch03_1;
public class Archer extends Hero {
public Archer (String name, int hp) {
super(name, hp);
}
// 메서드 오버라이드
@Override
protected void attack() {
// super.attack();
System.out.println(super.name + "가 기본 공격을 합니다.");
}
// 부모(Hero)의 기능인 attack을 자식 클래스에서 재정의
void fireArrow() {
System.out.println("불화살 공격을 합니다.");
}
}
package ch03_1;
public class Wizard extends Hero{
public Wizard (String name, int hp) {
super(name, hp);
}
// 메서드 오버라이드
@Override
protected void attack() {
// super.attack();
System.out.println(super.name + "가 기본공격을 합니다.");
}
// 부모(Hero)의 기능인 attack을 자식 클래스에서 재정의
void freezing() {
System.out.println("얼음공격을 합니다.");
}
}
기능 확인
public static void main(String[] args) {
Warrior war1 = new Warrior("전사", 100);
war1.attack();
war1.comboAttack();
Archer arc1 = new Archer("궁수", 80);
arc1.attack();
arc1.fireArrow();
Wizard wiz1 = new Wizard("마법사", 60);
wiz1.attack();
wiz1.freeZing();
}
실행결과
전사가 기본 공격을 합니다.
전사가 2단 공격을 합니다.
궁수가 기본 공격을 합니다.
불화살 공격을 합니다.
마법사가 기본공격을 합니다.
얼음공격을 합니다.
'Java > Java 연습문제' 카테고리의 다른 글
[JAVA] 매개변수의 다형성 연습 (0) | 2023.08.11 |
---|---|
[JAVA] 배열의 활용 - 총합과 평균, 최대값과 최소값, 섞기(shuffle) (0) | 2023.08.09 |
[JAVA] 클래스 정의 및 활용 실습 (0) | 2023.07.28 |
[JAVA] 멤버변수와 메서드를 활용한 실습 (0) | 2023.07.28 |
[JAVA] 함수구현하기 (0) | 2023.07.28 |