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

 找回密码
 加入黑马

QQ登录

只需一步,快速开始

© 张水荣 中级黑马   /  2012-7-19 12:55  /  1746 人查看  /  9 人回复  /   0 人收藏 转载请遵从CC协议 禁止商业使用本文

本帖最后由 张水荣 于 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. }
复制代码


评分

参与人数 1技术分 +1 收起 理由
蒋映辉 + 1 鼓励一下新童鞋....

查看全部评分

9 个回复

倒序浏览
public static void printObject(Objedt obj) {//这里是定义一个静态的无返回值的名字叫做printObject 的方法,参数为一个Objectl类,Object类是所有类的父类。大括号中是方法体。
     Class cla = obj.getClass();                   //获取obj对象的字节码Class文件对象,赋给cla。
    if( cla.isArray() ) {                               //if条件语句,cla.iaArray()的意识就是判断他是否是一个数组。如果是就走if控制的代码块、如果不是就走else控制的代码块。
        int len = Array.getLength(obj);        //用Array类里面的getLength()方法获取obj数组的的长度,并赋值给int的变量len。
        for(int i = 0; i < len; i ++) {             //for循环,
            System.out.println(Array.get(obj,i));//打印得到的obj数组中的每个值。假如传进去的是int[] arr={1,2,3}.就打印出1,2,3
        }
    } else {                                             //如果传进来的不是一个数组,就走下面的代码块。
        System.out.println(obj);                  //假如传进来的是一个String str = "abc",那么打印出来的就是abc。
    }
}
传进来的参数是你在main方法中调用这个方法是所需要给出的参数。
所有这个没有涉及到多态。希望你能明白。
回复 使用道具 举报
在我看来没有用到多态,只有继承了Object的类,但是没有重写,没有覆盖,应该说我暂时没看出来啊 不知道对不对
回复 使用道具 举报
cia继承了Object的类
  1. System.out.println(Array.get(obj,i));
复制代码
这句是使用了多态的
回复 使用道具 举报
王龙彪 发表于 2012-7-19 13:41
cia继承了Object的类这句是使用了多态的

重写和引用在哪里
回复 使用道具 举报
Lewis 发表于 2012-7-19 14:28
重写和引用在哪里

不是一定要重写的
那个Object就是引用
回复 使用道具 举报
杨卓儒 黑马帝 2012-7-19 14:38:20
7#
王龙彪 发表于 2012-7-19 14:30
不是一定要重写的
那个Object就是引用

Object是对象的意思吧?  就像 String[] args中的String一样,只是表示接受的参数的类型吧?
回复 使用道具 举报
王龙彪 发表于 2012-7-19 14:30
不是一定要重写的
那个Object就是引用

多态好像必须满足以上三个条件的吧!
回复 使用道具 举报
Lewis 发表于 2012-7-19 14:38
Object是对象的意思吧?  就像 String[] args中的String一样,只是表示接受的参数的类型吧? ...

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

继承接口才必须要重写里面的方法
继承的父类如果需要重新实现里面的功能的话,才需要重新,不然直接使用父类的方法就可以 了
回复 使用道具 举报
您需要登录后才可以回帖 登录 | 加入黑马