黑马程序员技术交流社区

标题: 关于多态 [打印本页]

作者: 张水荣    时间: 2012-7-19 12:55
标题: 关于多态
本帖最后由 张水荣 于 2012-7-19 21:43 编辑


多态使用的条件:
1. 要有继承
2. 要有重写
3. 父类引用指向子类对象
请问下面的一个例子有没有使用多态:
  1. public static void printObject(Objedt obj) {
  2.      Class cla = obj.getClass();
  3.     if( cla.isArray() ) {
  4.         int len = Array.getLength(obj);
  5.         for(int i = 0; i < len; i ++) {
  6.             System.out.println(Array.get(obj,i));
  7.         }
  8.     } else {
  9.         System.out.println(obj);
  10.     }
  11. }
复制代码



作者: 杨卓儒    时间: 2012-7-19 13:36
在我看来没有用到多态,只有继承了Object的类,但是没有重写,没有覆盖,应该说我暂时没看出来啊 不知道对不对
作者: 王龙彪    时间: 2012-7-19 13:41
cia继承了Object的类
  1. System.out.println(Array.get(obj,i));
复制代码
这句是使用了多态的
作者: 杨卓儒    时间: 2012-7-19 14:28
王龙彪 发表于 2012-7-19 13:41
cia继承了Object的类这句是使用了多态的

重写和引用在哪里
作者: 王龙彪    时间: 2012-7-19 14:30
Lewis 发表于 2012-7-19 14:28
重写和引用在哪里

不是一定要重写的
那个Object就是引用
作者: 杨卓儒    时间: 2012-7-19 14:38
王龙彪 发表于 2012-7-19 14:30
不是一定要重写的
那个Object就是引用

Object是对象的意思吧?  就像 String[] args中的String一样,只是表示接受的参数的类型吧?
作者: 张水荣    时间: 2012-7-19 15:17
王龙彪 发表于 2012-7-19 14:30
不是一定要重写的
那个Object就是引用

多态好像必须满足以上三个条件的吧!
作者: 王龙彪    时间: 2012-7-19 16:19
Lewis 发表于 2012-7-19 14:38
Object是对象的意思吧?  就像 String[] args中的String一样,只是表示接受的参数的类型吧? ...

Object不是对象,是一个类,所有类的父类
class出来的任何类都是Object的子类,都默认继承了Object,都可以使用Object里的函数...
作者: 王龙彪    时间: 2012-7-19 16:20
张水荣 发表于 2012-7-19 15:17
多态好像必须满足以上三个条件的吧!

继承接口才必须要重写里面的方法
继承的父类如果需要重新实现里面的功能的话,才需要重新,不然直接使用父类的方法就可以 了




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