我寫了以下3段代碼:
驅動程式.java:
package herds;
public class Driver {
public static void main(String [] args) {
organism Wolf = new organism(1,2);
System.out.println(Wolf.toString());
Wolf.move(1,2);
System.out.println(Wolf.toString());
dog Bobby = new dog(0,3,"Bobby");
System.out.println(Bobby.bark());
System.out.println(Bobby.toString());
Bobby.move(0, 1);
System.out.println(Bobby.toString());
}
}
有機體.java
package herds;
public class organism {
int x;
int y;
public organism(int x, int y) {
this.x = x;
this.y = y;
}
public String toString() {
return "x: " this.x ";" "y: " this.y;
}
public void move(int dx, int dy) {
this.x = this.x dx;
this.y = this.y dy;
}
}
狗.java:
package herds;
public class dog extends organism {
int x;
int y;
String name;
public dog(int x, int y, String name) {
super(x, y);
this.name = name;
}
public String bark() {
return this.name " says Woof";
}
@Override
public void move(int dx, int dy) {
this.x = dx;
this.y = dy;
}
}
我遇到的問題是驅動程式檔案的輸出。具體來說,它給出了以下輸出:
x: 1;y: 2
x: 2;y: 4
Bobby says Woof
x: 0;y: 3
x: 0;y: 3
我不明白為什么最后一行是x: 0;y: 3,而不是x: 0;y: 1,因為根據 dog 類的 move 方法的定義,this.x = 0和this.y = 1. 那么為什么會x: 0和y: 3之后呼叫這個方法呢?
uj5u.com熱心網友回復:
你是隱藏
x,并y在課堂上dog。當你在
move方法中更新它們時,你也在dog類中更新它們。但是該
toString方法從organism類中列印出來。
使固定:
只需從班級中洗掉x和。您可能需要在類中添加到它們的定義中。(也去掉來自于類。說真的我不喜歡總是加上風格實體變數。)ydogprotectedorganismthismovedogthis
public class dog extends organism {
//int x;
//int y;
String name;
轉載請註明出處,本文鏈接:https://www.uj5u.com/caozuo/321985.html
