선생님이 상속을 배우면 다마고치를 만들어볼거라고 해서
자습 시간에 혼자 예습한 상속을 이용해 한번 만들어보았다 ㅋㅋㅋ
아참!
이번엔 인텔리제이 툴을 이용해보았다ㅎㅎ
조상 클래스
import java.util.Scanner;
public class MonsterVO {
private int level; //레벨
private int ex; //경험치
private String mon;
public String getMon() {
return mon;
}
public void setMon(String mon) {
this.mon = mon;
}
Scanner sc = new Scanner(System.in);
public int getLevel() {
return level;
}
public void setLevel(int level) {
this.level = level;
}
public int getEx() {
return ex;
}
public void setEx(int ex) {
this.ex = ex;
}
public int getEnergy() {
return energy;
}
public void setEnergy(int energy) {
this.energy = energy;
}
private int energy; //에너지
private String tribe; //종족
MonsterVO() {
super();
}
public void printStet() {
System.out.println(mon+"의 레벨 : "+level+" 경험치 : "+ex+" 에너지 : "+energy);
}
public void eat() {
System.out.println("밥을 먹었습니다");
energy+=20;
ex++;
levelUp();
printStet();
}
public void sleep() {
System.out.println("잠을 잡니다");
energy+=20;
ex++;
levelUp();
printStet();
}
public void play() {
System.out.println("놀아주었습니다");
energy-=20;
ex++;
levelUp();
printStet();
dead();
}
public void workout() {
System.out.println("운동을 합니다");
energy-=20;
ex++;
levelUp();
printStet();
dead();
}
public void levelUp() {
if(ex==3) {
System.out.println("레벨 업!");
printStet();
level++;
ex=0;
}
}
public void dead() {
if(energy<=0) {
System.out.println("사망했습니다");
System.exit(0);
}
}
public void PlayGames(Scanner sc) {
boolean flag = true;
int i = 0;
while (flag) {
System.out.println("1.밥먹기 2.재우기 3.놀아주기 4.운동 5.종료");
i = sc.nextInt();
switch (i) {
case 1:
eat();
break;
case 2:
sleep();
break;
case 3:
play();
break;
case 4:
workout();
break;
case 5:
System.out.println("게임 종료");
break;
}
}
}
}
자손 클래스들
public class Picachoo extends MonsterVO {
Picachoo() {
super();
super.setMon("피카츄");
super.setEx(0);
super.setEnergy(50);
super.setLevel(0);
}
}
public class Ggobugi extends MonsterVO {
Ggobugi() {
super();
super.setMon("꼬부기");
super.setEx(0);
super.setEnergy(40);
super.setLevel(0);
}
}
public class Isanghae extends MonsterVO {
Isanghae() {
super();
super.setMon("이상해씨");
super.setEx(0);
super.setEnergy(40);
super.setLevel(0);
}
}
메인
import java.util.Scanner;
public class PlayMain {
public static void main(String[] args) {
Scanner sc = new Scanner(System.in);
int a=0;
System.out.println("1.피카츄");
System.out.println("2.꼬부기");
System.out.println("3.이상해씨");
System.out.print("캐릭터 선택 : ");
a = sc.nextInt();
boolean flag = true;
if(a==1) { //피카츄 선택
Picachoo p = new Picachoo();
p.PlayGames(sc);
} else if(a==2) { //꼬부기 선택
Ggobugi g = new Ggobugi();
g.PlayGames(sc);
} else if(a==3) { //이상해씨 선택
Isanghae i = new Isanghae();
i.PlayGames(sc);
}
}
}
결과
시간이 더 있었으면 좀 더 깔끔하게 만들 수 있었을 것 같다...!!
다음에 학원 과제로 만들면
좀 더 다듬어서 만들어봐야겠다!!
오늘 유튜브 영상으로 강의를 듣다가
상속을 통해 확장이 예상되면,
private 대신 protected 접근 제어자를 써도 괜찮다고 한다
protected -> 같은 패키지 또는 자손클래스(다른 패키지도 가능)만 접근 가능
얘는 어차피 같은 클래스여서 private 썼는데
다음엔 protected로 만들어봐야겠다!
728x90
'혼자서 개발새발' 카테고리의 다른 글
JAVA) 객체배열/참조변수 형변환/매개변수의 다형성 이용해 결과값을 만들어보자! (0) | 2022.10.07 |
---|---|
JAVA) 상속+추상클래스+다형성으로 다마고치를 만들어보자! (1) | 2022.10.06 |
JAVA) 객체 배열(ArrayList XXX)을 이용하여 등록,출력,검색,수정 (1) | 2022.10.05 |
JAVA) 간단한 회원가입 페이지를 만들어보자! (1) | 2022.10.04 |
int a 값에 메소드 return값을 담는다면? (0) | 2022.10.01 |