黑马程序员技术交流社区
标题:
关于子父类覆盖的问题
[打印本页]
作者:
Lscreat
时间:
2014-12-3 09:49
标题:
关于子父类覆盖的问题
这是毕老师视频里的一个题一直没理解到为啥输入A之后调用子类方法返回flase没执行啊。
下面是代码:
class Fu
{
boolean show(char a)
{
System.out.println(a);
return true;
}
}
class Demp 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 flase;
}
}
复制代码
作者:
Lscreat
时间:
2014-12-3 09:50
但是输入B之后执行子类返回flase后就停止了。
作者:
冬天的雪
时间:
2014-12-3 11:06
这个f.show('B')是调用子类的show方法,永远返回的是false,(f.show('B')&&(i<2))对于&&来说左边为假,右边都不需要运算了,所以判断条件永远为假,那么循环条件都不满足,当然不用循环了,所以只打印一个A
作者:
hello_csu
时间:
2014-12-3 11:42
这是继承的特性,覆盖之后不管子类父类都指向的是子类的方法函数,且作用子类。
作者:
java小兵
时间:
2014-12-3 13:43
第几天的视频啊?
作者:
Mr.Ni
时间:
2014-12-3 22:27
为啥输入A之后调用子类方法返回flase没执行
for(a;b;c)这里a定义的是初始条件,不是判断条件,只定义不判断,
b定义的是循环判断条件,为false就不循环了
c定义的是循环条件,就是该怎么循环,是自增还是自减或是别的什么的
作者:
hello_csu
时间:
2014-12-4 21:20
子类覆盖了父类的方法后,你就可以理解父类和子类其实调用该方法都指向的是子类的方法,所以输出子类的。你可以自己使用eclipse跟踪debug一下你就明白了。
作者:
叫我小强
时间:
2014-12-4 23:16
此题先读主函数,当到for循环f.show('A')时运行子类中的show方法结果为A返回一个false
但是false没有被使用,接着读条件f.show('B')还是运行子类的show方法,打印B返回结果为false,这个false被条件表达式调用了,false&&(i<2);双&& 的特点是,左边为false右边不运行,所以for循环结束,主函数也结束了。
打印结果为 A和B
作者:
逍遥小seng
时间:
2014-12-5 01:19
实例方法和实际调用它的对象绑定,也就是实例方法代表的是调用它的对象所属类中的实力方法。
作者:
zhou1234
时间:
2014-12-5 08:51
因为show()被覆盖之后,返回的是false,而&&左边为假时,不看右边的,所以只输出一个'A'
作者:
zhou1234
时间:
2014-12-5 08:53
因为show()被覆盖之后,返回的是false,而&&左边为假时,不看右边的,所以只输出一个'A'
作者:
没伞的孩子
时间:
2014-12-5 10:35
正解!!->>因为show()被覆盖之后,返回的永远是false,而&&左边为假时,不看右边的,所以只输出一个'A'
作者:
lwh316658735
时间:
2014-12-5 11:54
for(f.show('A');f.show('B')&&(i<2);f.show("C"))
执行顺序:它会先执行f.show('A') 这是就打印了A但是也返回了false,但这里返回值并没有用处,这只是一个初始化。接下来就是{f.show('B')&&(i<2)}(这里返回true才会继续执行后面否则不会) 前者返回false 遇到&&后面便不会判断后面的执行
欢迎光临 黑马程序员技术交流社区 (http://bbs.itheima.com/)
黑马程序员IT技术论坛 X3.2