黑马程序员技术交流社区
标题:
这个程序流程怎么算的
[打印本页]
作者:
HM周一帆
时间:
2013-4-9 20:06
标题:
这个程序流程怎么算的
本帖最后由 HM周一帆 于 2013-4-9 21:05 编辑
class Fu
{
boolean show(char a)
{
System.out.println(a);
return true;
}
}
class Demo extends Fu
{
public static void main(String[] args)
{
int i=0;
Fu f=new Demo();
Demo d=new Demo();
for(f.show('A');f.show('B')&&(i<2);f.show('C'))
{
i++;
d.show('D');
}
}
boolean show(char a)
{
System.out.println(a);
return false;
}
}
程序答案是AB 求步骤
作者:
丁一
时间:
2013-4-9 20:17
执行 f.show('A') 时输出 A; 返回false
执行 f.show('B') 时输出B; 返回false for条件不满足 不执行循环 程序结束
作者:
谢达
时间:
2013-4-9 20:18
for(f.show('A');f.show('B')&&(i<2);f.show('C'))
1、执行f.show('A'); 输出'A';
2、执行f.show('B');输出'B'同时返回false; 所以循环在这里就终止了
所以输出就是AB
作者:
郭彦君
时间:
2013-4-9 20:21
1、创建2个Demo对象,我觉得没什么用,都是子类的对象,调用方法时可定先找子类中的方法。
2、for(f.show('A');f.show('B')&&(i<2);f.show('C'))
先执行f.show(‘A’),执行的是子类的show方法,所以打印A
再执行f.show('B'),也是执行的子类的show方法,所以打印B,并返回false。
后面就不执行了,所以打印AB
作者:
HM何伟
时间:
2013-4-9 20:29
当父类的引用指向子类实例对象时,类的方法为非静态成员函数。编译时期看左边,也就是父类。运行时期看右边也就是子类。
在这个题中的方法为非静态成员函数。因此f.show('A')和f.show('B')都是在子类中运行的。
for(f.show('A');f.show('B')&&(i<2);f.show('C'))调用用f.show('A')时,返回false,打印A.调用f.show('B')时,也返回false,打印B.
原来的for变成了现的for(false;false&&(i<2);f.show('C'))。
作者:
赵晓东
时间:
2013-4-9 20:42
因为你f.show()调用的是子类Demo中的show函数,return返回的都是false,父类的引用指向了子类对象,使用的是子类中的show方法
作者:
吴林飞
时间:
2013-4-9 20:44
for(f.show('A');f.show('B')&&(i<2);f.show('C'))
Fu f=new Demo(); 多态: 当父类引用指向子类对象时,编译时期查看父类中是否有该方法,如果没有编译失败,但是运行时期,调用的还是子类对象的方法。
f.show('A');初始化表达式,一定运行的,且只运行一次,输出A
f.show('B')&&(i<2);循环条件表达式,为true才执行循环体,f.show('B'),输出B并返回了false, false&&(0<2)返回false,循环到此结束。
输出 A
B
欢迎光临 黑马程序员技术交流社区 (http://bbs.itheima.com/)
黑马程序员IT技术论坛 X3.2