예제
게임 캐릭터 공격 프로젝트를 구현
Hero.java
public class Hero { // 게임 캐릭터를 의미, 부모클래스 String name; public Hero (String name){ // Hero라는 클래스를 초기화 해줄 수 있도록 생성자 만들기 this.name = name; // 자신의 이름을 초기화 해줄수 있도록 만들어주기 } public void attack() { System.out.println("주먹찌르기!"); } } |
Warrior.java
public class Warrior extends Hero { public Warrior (String name) { // 생성자 만들어주기 // 부모클래스 Hero가 가지는 name이라는 기본적인 자기 내부 변수를 초기화 super (name); // super은 부모클래스의 생성자를 의미 // 부모클래스가 가지고 있던 변수들을 초기화 } public void groundCutting() { System.out.println ("대지 가르기"); } } |
Archer.java
public class Archer extends Hero { public Archer (String name) { super (name); } public void fireArrow() { System.out.println ("불화살"); } } |
Wizard.java
public class Wizard extends Hero { public Wizard (String name) { super (name); } public void freezing() { System.out.println ("얼리기"); } } |
Main.java
public class Main { public static void main (String[] args) { Hero[] heros = new Hero[3]; // 게임 캐릭터들을 담을 수 있는 Hero[] 배열 만들기 배열 이름은 heros 라고 하기 Hero가 총 3가지가 들어갈 수 있는 공간 만들기 heros[0] = new Warrior("전사"); heros[1] = new Archer("궁수"); heros[2] = new Wizard("마법사"); // 생성자를 이용한 다형성 기법으로 캐릭터들 초기화 for (int i = 0; i < heros.length; i++) { heros[i].attack(); if (heros [i] instanceof Warrior){ // 현재 접근하고 있는 하나의 캐릭터가 전사인지 물어보는 것 // 즉, i번째 인덱스에 해당하는 하나의 게임 캐릭터가 Warrior의 instance인지 물어보는 것 Warrior temp = (Warrior) heros[i]; // 선택된 히어로를 전사 instance로 형변환 temp.groundCutting(); } else if (heros[i] instanceof Archer){ Archer temp = (Archer) heros[i]; temp.fireArrow(); } else if (heros[i] instanceof Wizard){ Wizard temp = (Wizard) heros[i]; temp.freezing(); } } } } |
'JAVA' 카테고리의 다른 글
Java & SpringBoot로 시작하는 웹 프로그래밍 : 자바 인강 - 1주차 (0) | 2022.08.06 |
---|---|
자바 ( 컬렉션과 제네릭) (0) | 2021.12.02 |
자바 기초 9 (다형성) (0) | 2021.10.14 |
자바 기초 8 (인터페이스) (0) | 2021.10.14 |
자바 기초 7 (추상, Final 키워드) (0) | 2021.10.14 |