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

 找回密码
 加入黑马

QQ登录

只需一步,快速开始

© 荣天 中级黑马   /  2012-5-19 11:34  /  2241 人查看  /  8 人回复  /   0 人收藏 转载请遵从CC协议 禁止商业使用本文

  1. /*
  2. * 写出程序结果
  3. */
  4. package ExceptionDemo;
  5. class Fu
  6. {
  7.         boolean show(char a )
  8.         {
  9.                 System.out.println(a);
  10.                 return true;
  11.         }
  12. }
  13. public class ExceptionDemo9 extends Fu
  14. {
  15.         public static void main(String a[])
  16.         {
  17.                 int i=0;
  18.                 Fu f=new Fu();
  19.                 Demo d=new Demo();
  20.                 for(f.show('A');f.show('B')&&(i<2);f.show('C'))
  21.                 {
  22.                         i++;
  23.                         d.show('D');
  24.                 }
  25.         }
  26.         boolean show(char a)
  27.         {
  28.                 System.out.println(a);
  29.                 return false;
  30.         }
  31. }


  32.        


复制代码
多态的结果  ???  分析过程????   赐教   感谢

8 个回复

倒序浏览
  自己 先定下哈               请朋友赐教
回复 使用道具 举报
结果为ABDCBDCB,貌似你的多态下过没出来。另外有错误  Demo d=new Demo();没有Demo,应该是ExceptionDemo9吧;

首先是for(1;2;3)的初始1f.show('A');只运行一次;然后是2的判断。i<2且f.show('B');由于return ture;这符合条件
运行d.show('D');由于你在子类覆盖了父类方法。运行d.show('D');然后运行3的代码f.show('C');所以为ABDC;
然后又循环运行2,3。为BDC,最后由于该i=2所以不符合条件但会运行前一句f.show('B');
综上:结果为ABDCBDCB;但我终觉得楼主要的效果没出来。可能设计有问题
回复 使用道具 举报
本帖最后由 黄奕豪 于 2012-5-19 12:29 编辑

首先,编译挂了,因为你里面的Demo d= new Demo没定义
其次,改了这句,改为 ExceptionDemo9 d= new ExceptionDemo9()(估计这是LZ的本意);
输出结果为:ABDCBDCB
1、直接说for循环里面吧,先调用f.show('A')输出A,返回true
2、判断f.show('B')&&(i<2)左边输出B返回true,右边i=0时为true,true&&true=true
3、执行循环后i=1,执行d.show('D')打印D,返回false,但未用到
4、然后执行f.show("c"),打印C,返回true,这里也未用到这个值
5、同2一样,判断f.show('B')&&(i<2),同样为真,打印B
6、执行循环,i=2,打印D
7、同4一样,执行f.show('C')打印C
8、判断f.show('B')&&(i<2),打印B,左边为真,判断右边(2《2)为假,true&&false=false,循环结束!
回复 使用道具 举报
      Demo d=new Demo();   这句啥意思?
回复 使用道具 举报
嗯,把Demo9()改成ExceptionDemo9后,我得到的运行结果与楼上一样也是ABDCBDCB
for()方法中,首先打印A,然后在打印B,这个时候i=0小于2,执行i++变为1,在打印D,在打印C,
进入下一轮在进行判定打印B,i=1小于2,i++变为2在依次打印D、C、B,这个时候i=2不小于2.
楼主用在ExceptionDemo9类重写show方法,或许是想验证重写方法特性,或许把子类中的重新方法打印的效果与父类分开就体现出来了。
回复 使用道具 举报
荣天 中级黑马 2012-5-19 20:24:43
7#
输出的结果是:A
                     B
回复 使用道具 举报
荣天 中级黑马 2012-5-19 20:26:05
8#
不要运行程序   程序编译有错误的   
      问题是多态      
回复 使用道具 举报
看了半天不知道楼主要表达什么意思,既然涉及到多态,那么我就说一下自己的理解吧,仅供参考。
多态一般是父类或者接口的引用指向其子类的对象。

对象的多态性:

         动物 x = new 猫();

         一个对象两种形态。

         就是一个对象对应着不同类型。

一般简单来说就是父类型的对象指向子类型的引用。



注意:对于转型,自始自终都是子类对象在做着类型的变化。
向上转型特点:1,限制子类特有的功能。2,提高扩展性。
回复 使用道具 举报
您需要登录后才可以回帖 登录 | 加入黑马