【发布时间】:2014-03-23 05:30:09
【问题描述】:
public class monstertestdrive {
public static void main(String[] args) {
monster[] ma=new monster[3];
ma[0]=new vampier();
ma[1]=new monster();
ma[2]=new dragon();
for(int x=0;x<3;x++){
ma[x].frighten(x);
}
}
}
class monster{
boolean frighten(int d){
System.out.println("arrah");
return false;
}
}
class vampier extends monster{
boolean frighten(int x){
System.out.println("a bite?");
return true;
}
}
class dragon extends monster{
boolean frighten(int degree){
System.out.println("breath fire");
return true;
}
}
frighten 方法中提到的返回类型有什么用吗? 我问这个是因为我交换了返回类型,但输出是相同的。但是当我改变数组对象的位置,即 0,1 和 2 时,我得到了不同的输出。
【问题讨论】:
-
不清楚你在问什么。对
frighten的调用都将返回一个布尔结果,但您不会在任何地方对该结果执行任何操作,因此更改该布尔结果不会影响任何事情也就不足为奇了。你期待什么? -
另外,如果改变数组元素的顺序,然后按顺序进行迭代,输出自然会不一样。
-
@JacobM 实际上这个程序是在一本书(Head First Java)中编写的,根据书本,如果我们将返回类型从 true 更改为 false,那么我们会收到不同的输出。因此,我感到困惑并在此论坛上提出了这个问题。
-
手边没有 Head First Java 的副本,但我敢打赌,你已经改变了书中的内容。查看
ma[x].frighten(x);行。要使返回值产生任何效果,您必须先执行bool result = ma[x].frighten(x);之类的操作,然后再执行result之类的操作。 -
@JacobM 当我将 frighten 方法中的参数类型从 int 更改为 byte 时,为什么 Dragon frighten 方法不打印而 Monster 中的方法打印了两次
标签: java arrays methods boolean return