inflearn logo
강의

講義

知識共有

絵で学ぶJava、パート2:オブジェクト指向!

アップキャストとメソッドのオーバーライド

생성자

279

ska2485

投稿した質問数 26

0

public class UpCasting {
public static void main(String[] args) {
// 기사 객체 생성 및 초기화
Knight knight = new Knight();
knight.name = "아서스";
knight.hp = 180;
knight.strength = 50;

// 도적 객체 생성 및 초기화
Thief thief = new Thief();
thief.name = "발리라";
thief.hp = 120;
thief.agility = 40;

// 업 캐스팅 - 부모 타입으로 객체를 해석
Adventurer adv0 = knight;
Adventurer adv1 = thief;

// 모험가들의 배열 생성
Adventurer[] advs = { adv0, adv1 };

// 모든 모험가의 정보 출력
for (int i = 0; i < advs.length; i++) {
System.out.println(advs[i].toString());
}
}
}

/* 1. 부모 클래스 Adventurer를 만드세요. */
class Adventurer {
/* 1.1 공통 필드를 선언하세요. */
String name;
int hp;

/* 1.2 공통 메소드를 작성하세요. */
public void punch() {
System.out.printf("[%s]의 펀치!!\n", name);
}
public String toString() {
return String.format("[%s] HP: %d", name, hp);
}

}

/* 2. Knight Adventurer의 자식 클래스로 정의하세요. */
class Knight extends Adventurer {
/* 2.1 부모와 중복된 필드를 제거하세요. */
int strength; //

/* 2.2 부모와 중복된 메소드를 제거하세요. */

public void berserker() {
System.out.println("체력과 공격력이 증가합니다.");
}
}

/* 3. Thief Adventurer의 자식 클래스로 정의하세요. */
class Thief extends Adventurer {
/* 3.1 부모와 중복된 필드를 제거하세요. */
int agility; // 민첩

/* 3.2 부모와 중복된 메소드를 제거하세요. */

public void sharpen() {
System.out.println("크리티컬 확률이 증가합니다.");
}
}

///////////////////
//보통 이런식의 코드를 많이본 것 같습니다. 클래스끼리 상속을 통해 필드값을 공유하여 접근하고 수정하는 방법이요.
이코드도 생성자를 따로 사용햐지 않았는데 저번에도 말씀드렸지만 굳이 변수를 하나하나 다 적어가며
생성자를 선언해야 하는 이유가 있을까요?
보통 이런 방법을 더 많이 쓰지 않나해서 질문드립니다

oop java

回答 1

1

hongpark

정보가 모두 다른
Knight 객체와 Thief 객체를
100개 씩 직접 만들어보면
느낌이 옵니다 👻

생성자의 필요성을 묻는다는 건,
왜 메소드를 굳이 만들어야하느냐 라는 질문과 같은데요.

메소드를 만들면 얻어지는 이점이 있듯,
생성자 또한 마찬가지 입니다

0

ska2485

좀 더 다양한 코드를 접하고 읽어봐야 할 것 같습니다. 항상 감사합니다!

객체지향 Java 파트2 붕어빵 문제 질문 있습니다.

0

140

2

11장 연습문제 6번

0

156

3

출력값이 다르다고 나오네요!

0

321

1

연습문제 이클립스에서는 되는데요

0

265

1

객체 배열과 반복문 강의 중

0

382

2

클래스 실행 순서가 궁금합니다.

0

662

2

자바api주사위통계 예제2번 질문있습니다

0

314

1

자바를 부탁해 질문

0

675

1

질문있습니다.

0

329

1

강의 정리 내용

0

332

1

유튜버 강의와 차이점 문의드립니다.

0

318

1

홍팍님 교재 문의

0

295

1

외부로부터 감추기 문제 질문

0

235

1

클래스가 다른데 메소드를 어떻게 가져오는건가요?

0

240

1

객체 생성할 때 매개변수에 new연산자는 왜 붙인건가요?

0

307

1

안녕하세요. 생성자관련?하여 질문드립니다.

0

206

1

홍팍쌤 안녕하세요

0

217

1

다형성(?)에대해 질문드립니다.

0

215

1

Object최상위 클래스에

0

209

1

질문있습니다.

0

166

1

질문있습니다.

0

152

1

void 질문있습니다.

0

178

1

return에 대해 질문있습니다

0

210

1

생성자를 만들어야 하는 이유

0

245

1