黑马程序员技术交流社区

标题: 【Day08】多态的主板示例。帮忙看一下我分析的流程对不对 [打印本页]

作者: 付江涛    时间: 2014-2-16 16:22
标题: 【Day08】多态的主板示例。帮忙看一下我分析的流程对不对
  1. /*
  2. 需求:
  3. 电脑运行实例,
  4. 电脑运行基于主板
  5. */

  6. interface PCI  //PIC接口  
  7. {
  8.         public void open();
  9.         public void close();
  10. }

  11. class MainBoard //主板
  12. {
  13.         public void run()   //3、执行run方法,屏幕输出。
  14.         {
  15.                 System.out.println("主板运行:MainBoard run");
  16.         }
  17.         public void usePCI(PCI p)  // 5、传入声卡网卡对象。   //(PCI p = new NetCard()  接口型引用指向自己的子类对象)
  18.         {
  19.                 if (p!=null)  //6、判断 p!=null,向下执行。
  20.                 {
  21.                         p.open();     //7、因为p指向子类对象 NetCard ,所以执行NetCard的open方法。

  22.                         p.close();    //9、因为p指向子类对象 NetCard ,所以执行NetCard的close方法。
  23.                 }
  24.         }
  25. }

  26. class NetCard implements PCI//网卡
  27. {
  28.         public void open()
  29.         {
  30.                 System.out.println("网卡开启:NetCard open");  //8、执行
  31.         }
  32.         public void close()
  33.         {
  34.                 System.out.println("网卡关闭:NetCard close"); //10、执行
  35.         }
  36. }

  37. class  Demo
  38. {
  39.         public static void main(String[] args)
  40.         {
  41.                 MainBoard mb=new MainBoard(); //1、建立主板对象。
  42.                 mb.run();                     //2、对象调用“run方法”。
  43.                
  44.                 mb.usePCI(new NetCard());     //4、对象调用usePCI方法,传入网卡对象。
  45.         }
  46. }
复制代码


@黑马牛人~~

按序号走的流程,帮忙看一下,总感觉哪不对劲


作者: 付江涛    时间: 2014-2-16 16:27
第8、第10应该是 子类NetCard 复写了 接口的方法吧?
作者: 疲劳的小马    时间: 2014-2-16 19:43
我也刚出学到这里。。按照你的流程走感觉没错呀。。执行顺序是对的。唯一注意的就是在第五步,多态那里PCI p = new NetCard(),当传入网卡的对象时,网卡类实现了PCI接口的方法,并对PCI接口的打开open(),关闭close()方法进行了重写,下面就是调用了。。你的顺序是完全正确的。
作者: 付江涛    时间: 2014-2-16 20:51
疲劳的小马 发表于 2014-2-16 19:43
我也刚出学到这里。。按照你的流程走感觉没错呀。。执行顺序是对的。唯一注意的就是在第五步,多态那里PCI  ...

恩恩 对就行了 多谢解答~




欢迎光临 黑马程序员技术交流社区 (http://bbs.itheima.com/) 黑马程序员IT技术论坛 X3.2