黑马程序员技术交流社区
标题:
这个属于什么类型的问题?
[打印本页]
作者:
汗血黑马
时间:
2014-3-20 16:16
标题:
这个属于什么类型的问题?
本帖最后由 汗血黑马 于 2014-3-20 16:45 编辑
class Fu//定义一个父类
{
boolean show(char a)//定义一个方法,接收字符串
{
System.out.println(a);//打印字符串
return true;//返回值 true.
}
}
class Demo extends Fu//定义Demo类继承父类
{
public static void main(String[] args)//程序主函数。
{
int i =0;//定义一个变量i。
Fu f = new Demo();//创建一个fu类的子类对象Demo.
Demo d = new Demo();//创建对象Demo的实例化对象。
for(f.show('o'); f.show('p')&&(i<2); f.show('C'))//遍历数组
{
i++;
d.show('D');
}
}
boolean show(char a)
{
System.out.print(a);
return false;
}
}//为什么打印的结果是op呢?
作者:
chen_x
时间:
2014-3-20 16:32
这个涉及到多态了,Fu类中有boolean show(char c)方法,子类Demo中继承了Fu类,并复写了这个show方法。
Fu f = new Demo();将子类对象赋给Fu类引用变量,但实际运行时,f.show('p')调用的是Demo这个子类对象的方法体,所以f.show('p')返回false.
for(f.show('o'); f.show('p')&&(i<2); f.show('C'))循环里, f.show('o')执行了一次,但第一次判断终止条件时就是false,循环一次都没执行,打印结果就是op.
作者:
一年_Hei
时间:
2014-3-20 16:34
父类引用指向子类对象,子类重写了父类的show方法, for(f.show('o'); f.show('p')&&(i<2); f.show('C')); for循环开始f.show('o'); 打印o。f.show('p')&&(i<2); 打印 p ,因为f.show('p')返回值是false,所以不会进入循序,程序结束。值打印了 o和p
欢迎光临 黑马程序员技术交流社区 (http://bbs.itheima.com/)
黑马程序员IT技术论坛 X3.2