У меня есть следующие классы.
public abstract class Thing {
private String appearance;
public void setAppearance(String appearance) {
this.appearance = appearance;
}
}
public abstract class MovableThing extends Thing {
// ASCII representation of MovableThing moving right.
private static String FACE_RIGHT;
// ASCII representation of MovableThing moving left.
private static String FACE_LEFT;
private boolean goingRight;
public MovableThing() {
setAppearance(FACE_RIGHT);
goingRight = true;
// Some other things
public void turnAround() {
goingRight = !goingRight;
if (goingRight) {
setAppearance(FACE_RIGHT);
} else {
setAppearance(FACE_LEFT);
}
}
public class Bird extends MovableThing() {
private static String FACE_RIGHT = "/'/>";
private static String FACE_LEFT = "<\\'\\";
public Bird() {
super();
// Some other things
}
}
Я знаю, что в настоящее время это неверно, потому что в MovableThing
, FACE_RIGHT
ничего не назначается, поэтому, когда я вызываю super()
в Bird
, appearance
просто устанавливаетсядо null
.Как я могу обойти это?У меня есть несколько животных с разными представлениями левого / правого ASCII, но я не уверен, как сделать все это в виде ООП.
Редактировать: Значит сказать Bird()
вместо Chicken()
.