
child class를 다음과 같이 짰는데,
public class Child extends Mankind implements walk, run, swim{
public Child(String name, int age) {
super(name, age, 5);
}
@Override
public void walk(int x, int y) {
int walkSpeed = speed;
System.out.println(name + " : ");
printMyLocation(walkSpeed, x, y);
}
@Override
public void run(int x, int y) {
int runSpeed = speed + 2;
System.out.println(name + " : ");
printMyLocation(runSpeed, x, y);
}
@Override
public void swim(int x, int y) {
int swimSpeed = speed + 1;
System.out.println(name + " : ");
printMyLocation(swimSpeed, x, y);
}
}
출력해보면 swim에서 speed가 6이 아니라 8이 출력됩니다. 제 생각에넌 run이 실행되고 swim이 실행되서 기본 speed 5에서 2가 더해지고 1이 더해져 나오는거 같은데, speed 자체는 건든적이 없고 별도의 runspeed, swimspeed를 만들어서 실행하였는데 왜 speed값이 변경되는지 잘 모르겠습니다.
printMyLocation은 무난하게 아래처럼 했습니다.
void printMyLocation(int speed, int x, int y) {
this.x = x;
this.y = y;
this.speed = speed;
System.out.println("Speed is " + speed + ", I'm on (" + x + ", " + y + ")");
}
