黑马程序员技术交流社区

标题: 黑马程序员——基础篇——多态 [打印本页]

作者: Himoriarty    时间: 2015-6-10 12:59
标题: 黑马程序员——基础篇——多态
本帖最后由 Himoriarty 于 2015-6-10 13:01 编辑

------- <a  target="blank">android培训</a>、<a  target="blank">java培训</a>、期待与您交流! ----------



多态:可以理解为事物存在的多种体现形态。

1、多态的基本体现,前提、好处、应用
体现:父类的引用指向了自己的子类对象,父类的引用也可以接受自己的子类对象。
好处:多态的出现大大提高了扩展性。
前提:必须是类与类之间有关系,要么继承,要么实现,通常还有一个前提,存在覆盖。
弊端:提高了扩展性,但是只能使用父类的引用访问父类中的成员。

Animal a = new Cat();  //类型提升,向上转型;
如果想要调用子类的特有方法时,需强制将父类的引用转换成子类类型,向下转型。
Animal a = new Animal();//如果父类不为抽象。
Cat c = (Cat) a;
       千万不要出现这样的操作,就是将父类对象转成子类类型,我们能转换的是父类应用指向了自己的子类对象时,该应用可以被提升,也可以被强制转换。
       多态自始至终都是子类对象在做变化。
       可以使用instanceof 来判断两个类是否为同一类。

  1. <div class="blockcode"><blockquote>interface PCI
  2. {
  3.         public void open();
  4.         public void close();
  5. }

  6. class MainBoard
  7. {
  8.         public void run()
  9.         {
  10.                 System.out.println("mainboard run");
  11.         }
  12.         public void usePCI(PCI p)
  13.         {
  14.                
  15.                 if(p != null)
  16.                 {
  17.                         p.open();
  18.                         p.close();
  19.                 }
  20.         }
  21. }

  22. class SoundBoard implements PCI
  23. {
  24.         public void open()
  25.         {
  26.                 System.out.println("soundboard open");
  27.                
  28.         }
  29.         public void close()
  30.         {
  31.                 System.out.println("Soundboard close");
  32.         }
  33. }

  34. class DuotaiDemo
  35. {
  36.         public static void main(String[] args)
  37.         {
  38.                 MainBoard mb = new MainBoard();
  39.                 mb.run();
  40.                 mb.usePCI(null);
  41.                 mb.usePCI(new SoundBoard());
  42.         }
  43. }
复制代码





2、在多态中非静态成员函数的特点:
       在编译时期,参阅引用类型变量所属的类中是否有调用的方法,如果有,编译通过,如果没有编译失败,在运行时期,参阅对象所属的类中是否有调用的方法。
       简单总结就是:成员函数在多态调用时,编译看左边,运行看右边。
3、在多态中静态成员变量的特点
       无论编译和运行,都参考左边引用型变量所属的类。


----------android培训java培训、java学习型技术博客、期待与您交流!------------


作者: 苗美丽    时间: 2015-6-10 22:01
总结的不错。
作者: cyd1058    时间: 2015-6-10 22:02
向大牛学习
作者: a1224577182    时间: 2015-6-10 22:05
总结的不错,学习了。
作者: wwb1105    时间: 2015-6-10 22:07
学习学习!~~~~
作者: 银哥    时间: 2015-6-10 22:20
学习一下
作者: 一休    时间: 2015-6-10 22:28
要有更深的理解还得不断地写例子  总结错误
作者: shuaiqi_P_D    时间: 2015-6-10 22:39
总结得不错,收藏了
作者: pizhihui    时间: 2015-6-10 22:40
学习,不错啊!
作者: heisedelangzi    时间: 2015-6-11 09:19
哈哈。你既然把博客都搬来了。
作者: zuopiezi    时间: 2015-6-11 10:17
学习了一下。。。。
作者: zhenxing133    时间: 2015-6-11 21:32
学习了...
作者: 年华虚度    时间: 2015-6-11 22:01
复习了下 !!!
作者: 王骥    时间: 2015-6-11 22:28
多态一直不理解,还要好好学习




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