※꼭 제 코드가 맞는 것도 아니고 정해진 답이 있는 것도 아닙니다. 문제가 어려워 접근하지 못하시는 분들을 위한 풀이이니 잘못된 점이 있으면 댓글로 남겨주시면 감사하겠습니다. 예제의 출력은 이 예제를 눈으로만 보고 계시는 분들이 있을 것 같아 직접 해보고 출력 값이 어떨까를 알고 가셨으면 하는 마음에 출력 값은 제공하지 않습니다. 궁금하신 분들은 코드를 복사해서 컴파일해보세요!
예제 1. 1을 입력하면 오렌지에 대한 정보가, 2를 입력하면 사과에 대한 정보가 출력되는 프로그램을 다향성을 이용하여 작성하시오. -> 클래스는 Fruit, Orange, Apple, Main 으로 구성, 정보는 이름, 가격, 신선도로 구성
코드
1
2
3
4
5
6
7
8
9
10
11
12
13
|
public class Fruit {
String name; //이름
int price; //가격
int fresh; //신선도
public void show() {
System.out.println("이름 :" + name);
System.out.println("가격 :" + price);
System.out.println("신선도 :" + fresh);
}
}
|
cs |
1
2
3
4
5
6
7
8
9
|
public class Orange extends Fruit {
public Orange() { //부모 클래스에서 선언한 변수 초기화
name = "오렌지";
price = 2000;
fresh = 10;
} //변수 초기화를 해주지 않을경우 null과 0을 반환한다.
}
|
cs |
1
2
3
4
5
6
7
8
9
|
public class Apple extends Fruit {
public Apple() {
name = "사과";
price = 1000;
fresh = 7;
}
}
|
cs |
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
|
import java.util.Scanner;
public class Main {
public static void main(String[] args) {
Scanner s = new Scanner(System.in);
System.out.print("오렌지는 1, 사과는 2를 입력하세요. :");
int n = s.nextInt();
Fruit fruit;
if(n == 1) {
fruit = new Orange(); //부모클래스의 변수로써 자식클래스의 인스턴스를 넣어줄 수 있다.
fruit.show();
}
else if (n == 2) {
fruit = new Apple();
fruit.show();
}
}
}
|
cs |
예제 2. 게임 캐릭터 공격하는 프로그램(캐릭터는 기본적으로 펀치를 날릴 수 있다. Player, Warrior, Archer, Wizard, Main 클래스로 구성되며 전사는 파워 슬래시, 궁수는 파이어 애로우, 마법사는 메테오를 사용할 수 있다. + 다형성, 객체 클래스가 사용된다.)
코드
1
2
3
4
5
6
7
8
9
10
11
12
13
|
public class Player {
String name;
public Player(String name) {
this.name = name;
}
public void attack() {
System.out.println("펀치");
}
}
|
cs |
1
2
3
4
5
6
7
8
9
10
|
public class Warrior extends Player {
public Warrior(String name) {
super(name);
}
public void powerSlash() {
System.out.println("파워 슬래시!");
}
}
|
cs |
1
2
3
4
5
6
7
8
9
10
|
public class Archer extends Player {
public Archer(String name) {
super(name);
}
public void fireArrow() {
System.out.println("파이어 애로우!!");
}
}
|
cs |
1
2
3
4
5
6
7
8
9
10
11
|
public class Wizard extends Player {
public Wizard(String name) {
super(name);
}
public void meteor() {
System.out.println("메테오!");
}
}
|
cs |
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
|
public class Main {
public static void main(String[] args) {
Player[] players = new Player[3];
players[0] = new Warrior("전사");
players[1] = new Archer("궁수");
players[2] = new Wizard("마법사");
for(int i = 0; i < players.length; i++) {
players[i].attack();
if(players[i] instanceof Warrior) { //players[i]가 Warrior의 인스턴스라면 실행
Warrior temp = (Warrior) players[i];
temp.powerSlash();
}
else if(players[i] instanceof Archer) { //players[i]가 Archer의 인스턴스라면 실행
Archer temp = (Archer) players[i];
temp.fireArrow();
}
else if (players[i] instanceof Wizard){
Wizard temp = (Wizard) players[i];
temp.meteor();
}
}
}
}
|
cs |
내일은 아마도 복습하는 시간을 가질 것 같아요. 오늘 포스팅이 좀 적지만 그만큼 헷갈리는 것들이니까 여러 번 살펴보셨으면 좋겠어요. 좋은 하루 보내세요.
'자바 공부' 카테고리의 다른 글
[JAVA]초보 개발자 김주호와 기초부터 시작하는 자바공부 6일차 (전화번호부) (0) | 2021.01.19 |
---|---|
[JAVA]초보 개발자 김주호와 기초부터 시작하는 자바공부 5일차 (0) | 2021.01.18 |
[JAVA]초보 개발자 김주호와 기초부터 시작하는 자바공부 4일차 (인터페이스(interface), 다형성(Polymorphism), 객체(Object)클래스) (0) | 2021.01.16 |
[JAVA]초보 개발자 김주호와 기초부터 시작하는 자바공부 3일차 예제 풀이 (0) | 2021.01.15 |
[JAVA]초보 개발자 김주호와 기초부터 시작하는 자바공부 3일차 (클래스(class), 상속(inheritance), 추상(abstract), Final) (0) | 2021.01.15 |