A股上市公司传智教育(股票代码 003032)旗下技术交流社区北京昌平校区

 找回密码
 加入黑马

QQ登录

只需一步,快速开始

本帖最后由 黑马-郑玉元 于 2013-3-16 07:15 编辑
  1. class Fu
  2. {
  3.         boolean show(char a)
  4.         {
  5.                 System.out.println(a);
  6.                 return true;
  7.         }
  8. }
  9. class Demo extends Fu
  10. {
  11.         public static void main(String[] args)
  12.         {
  13.                 int i=0;
  14.                 Fu f=new Demo();//父类引用指向子类对象
  15.                 Demo d=new Demo();

  16.                 for(f.show('A'); f.show('B')&&(i<2);f.show('C'))
  17.                 {
  18.                         i++;
  19.                         d.show('D');
  20.                 }                                   
  21.         }
  22.         boolean show(char a)
  23.         {
  24.                 System.out.println(a);
  25.                 return false;
  26.         }
  27. }
复制代码
求输出结果!运行的过程!!!

评分

参与人数 1技术分 +1 收起 理由
陈丽莉 + 1

查看全部评分

9 个回复

正序浏览
若还有问题,继续追问;没有的话,请将帖子分类改成【已解决】~
回复 使用道具 举报
杨博 中级黑马 2013-3-15 20:51:20
9#
  1. class Fu
  2. {
  3.         boolean show(char a)
  4.         {
  5.                 System.out.println(a);
  6.                 return true;
  7.         }
  8. }
  9. class Demo extends Fu
  10. {
  11.         public static void main(String[] args)
  12.         {
  13.                 int i=0;
  14.                 Fu f=new Demo();//父类引用指向子类对象
  15.                 Demo d=new Demo();//创建一个Demo类对象

  16.                 for(f.show('A'); f.show('B')&&(i<2);f.show('C'))//f.show('A')中,子类重写父类,
  17.                                 {                                                                                                //调用子类,所以执行子类show,打印结果为A
  18.                                                 //f.show('B')结果就为打印'B',返回false ,循环结束
  19.                         i++;
  20.                         d.show('D');
  21.                 }                                   
  22.         }
  23.         boolean show(char a)
  24.         {
  25.                 System.out.println(a);
  26.                 return false;
  27.         }
  28. }
复制代码
运行疑问在代码中有解答,其实主要就是子类有重写父类的show,看到这点就明白了

评分

参与人数 1技术分 +1 收起 理由
陈丽莉 + 1

查看全部评分

回复 使用道具 举报
祁振朋 发表于 2013-3-15 20:42
for循环先赋初值,然后进行判断f.show('B')&&(i

是的!!!
回复 使用道具 举报
for循环先赋初值,然后进行判断f.show('B')&&(i<2),条件成立才执行代码块。条件不成立代码块不会执行。
f.show('B') 由于前面代码父类引用指向子类对象的关系,这里的show执行的是子类的show方法,返回false,条件不成立,所以最后只是输出了AB

评分

参与人数 1技术分 +1 收起 理由
陈丽莉 + 1

查看全部评分

回复 使用道具 举报
刘海浩 发表于 2013-3-15 20:34
因为f.show('B')&&(i

哦。谢了。我搞错运行步骤了。
回复 使用道具 举报
罗海云 发表于 2013-3-15 20:30
可是我想问下哥们,为啥代码快里的不执行呢?求教

因为f.show('B')&&(i<2);返回false所以代码块中的不执行

  1.                 for(int i=0; i>1;i++)
  2.                 {
  3.                        
  4.                        System.out.println(1111);
  5.                 }   
复制代码
你可以运行这个代码试试。就明白了
回复 使用道具 举报
刘海浩 发表于 2013-3-15 20:13
首先, Fu f=new Demo();//父类引用指向子类对象,所以for循环中f.show('A'),调用子类Demo 中的show方法, ...

可是我想问下哥们,为啥代码快里的不执行呢?求教
回复 使用道具 举报
条理蛮清晰的!!谢谢!!!
回复 使用道具 举报
首先, Fu f=new Demo();//父类引用指向子类对象,所以for循环中f.show('A'),调用子类Demo 中的show方法,输出A,返回false;
然后继续执行f.show('B')&&(i<2);输出B,返回false,所以f.show('B')&&(i<2);返回false,条件不成立,退出循环。
所以最终结果只会输出A和B。

评分

参与人数 1技术分 +1 收起 理由
陈丽莉 + 1

查看全部评分

回复 使用道具 举报
您需要登录后才可以回帖 登录 | 加入黑马