JAVA를 잡아라!...
JAVA_상속_#2_포켓몬 본문
문제
▶ 포켓몬 클래스 형성 (상위 클래스)
< 멤버변수 >
- 반드시 타입을 가짐
- 레벨 설정 안했다면 5
- 경험치는 항상 0
- 이름 설정 안했다면 "포켓몬"
< 메소드 >
- 공격() : 어떤 타입인지에 따라 달라짐
- 인사() : 어떤 포켓몬인지에 따라 달라짐
▶ 전기타입 (하위 클래스) : 공격() ---> 백만볼트
▶ 피카츄 (하위 클래스) : 인사() ---> 피카피카
▶ 물타입 (하위 클래스) : 공격() ---> 물대포
▶ 꼬부기 (하위 클래스) : 인사() ---> 꼬북꼬북
코드
package inheritance;
class Poke {
//멤버변수 4가지 선언
String type;
int level;
int exp;
String name;
//생성자 형성 : 타입에 강제성을 줌.(반드시 필요)
Poke(String type){
this.type = type;
this.level = 5;
this.exp = 0;
this.name = "포켓몬";
}
//메소드 선언 : 아직 구현하진 않지만 하위 클래스에서 사용 예정
//하위 클래스에서 오버라이딩하면 아래 문구는 출력 x!
void attack(){
System.out.println("[로그 1.]");
System.out.println("포켓몬 클래스의 attack() - 아직 구현 x");
}
void hello(){
System.out.println("[로그 2.]");
System.out.println("포켓몬 클래스의 hello() - 아직 구현 x");
}
}
//포켓몬을 상속받는 전기타입 형성
class Elecc extends Poke {
//생성자 : 타입을 무조건 받아오기위해????
Elecc(){
//Poke(String type) //String이 1개 들어있는 부모 생성자
super("전기타입");
}
//공격() 메소드 어노테이션
@Override
void attack() {
System.out.println(this.name + " 백만볼트----------");
}
}
//포켓몬을 상속받는 물타입 형성
class Waterr extends Poke {
//생성자 : 타입을 무조건 받아오기위해????
Waterr(){
super("물타입");
}
//공격() 메소드 어노테이션
@Override
void attack() {
System.out.println(this.name + " 물대포----------");
}
}
//포켓몬을 상속받는 피카츄
class Pika extends Elecc{
Pika(){
this("피카츄");
//this("피카츄") == Pika("피카츄")
}
Pika(String name){
//super() : Elecc() //Elecc의 기본 생성자가 숨어있음
//이름만 저장하는 것이 아닌, 나머지 멤버변수는 super()기본 생성자를 통해 저장
this.name = name;
}
//인사() 메소드 어노테이션
@Override
void hello() {
System.out.println("피카피카 (*^___^*)");
}
}
//포켓몬을 상속받는 꼬부기
class Kobugi extends Waterr{
Kobugi(){
this("꼬부기");
}
Kobugi(String name){
this.name = name;
}
//인사() 메소드 어노테이션
@Override
void hello() {
System.out.println("꼬북꼬북 (*0___0*)");
}
}
public class freefree {
public static void main(String[] args) {
//Pika() 기본 생성자 메모리에 할당! Pika 클래스에 p1객체 생성!
Pika p1 = new Pika();
p1.attack();
p1.hello();
Kobugi k1 = new Kobugi();
k1.attack();
k1.hello();
}
}
'JAVA > JAVA_복습문제' 카테고리의 다른 글
JAVA_리턴타입 boolean인 메소드 연습_#1 (2) | 2023.12.05 |
---|---|
JAVA_상속_#3_Person (0) | 2023.12.03 |
JAVA_상속_#1_ColorPoint (this., this(), super., super()) (0) | 2023.12.01 |
JAVA_class 만들기_#2_생성자 오버로딩_Circle (0) | 2023.11.30 |
JAVA_class 만들기_#1_생성자 오버로딩_ColorPoint (0) | 2023.11.30 |