黑马程序员技术交流社区

标题: 多态Object的问题 [打印本页]

作者: 王宝龙    时间: 2012-9-7 14:07
标题: 多态Object的问题
本帖最后由 王宝龙 于 2012-9-9 23:29 编辑
  1. class InputDemo
  2. {
  3.         public static void main(String [] arge)
  4.         {
  5.                 sop("123456789");

  6.         }
  7.         public static void sop(Object obj)
  8.         {
  9.                 System.out.println(obj);
  10.         }
  11. }
复制代码
这样一段代码定义了一个用于输出的sop方法,我们像里面传入了“123456789”的字符串方法竟然依然可以打印,这是多态吗?不太理解
为什么定义一个Object对象却可以接受任何的东西进行输出。
作者: 广驰    时间: 2012-9-7 14:14
这就是多态,因为String类是Object的子类,Object是所有类的父类
public static void sop(Object obj)中的参数传进来String类型就相当于object obj= new string(“123456789”)
作者: 孔肖    时间: 2012-9-7 14:15
Object 是所有类的超类,也就是父类。所以作为参数它可以接收任意的类型。不但如此,所有的对象也都实现Object中的方法。
作者: 孙岳    时间: 2012-9-7 14:18
是多态,Object是所有类的超类,String也是其子类。
就像你定义的形式参数是人类,只要往里面传人类范围内的实际参数即可,传个“张三”当然没问题,因为他是“人类”。
作者: 武庆东    时间: 2012-9-7 14:20
java中多态主要有一下体现形式:
第一:方法的重载和重写
第二:对象的多样性
这个题目中体现的是对象的多态性,对象的多态性体现在两种类型:、
1、向上转型-------->子类向上转型
2、向下转型-------->父类向下转型
作者: 杨卫腾    时间: 2012-9-7 15:00
类 Object 是类层次结构的根类。每个类都使用 Object 作为超类。所有对象(包括数组)都实现这个类的方法。-----来自API文档

所以这个方法中定义了Object o  就可以接收到继承自object所有类的对象。

Object[] obj这样的形式,就是一个Object数组构成的参数形式。说明这个方法的参数是固定的,是一个Object数组,至于这个数组中存储的元素,可以是继承自Object的所有类的对象。

作者: 任艳旭    时间: 2012-9-7 15:03
类 Object 是类层次结构的根类。每个类都使用 Object 作为超类。所有对象(包括数组)都实现这个类的方法。
很简单的理解Object是他们的祖宗。
作者: 灵感    时间: 2012-9-7 15:04
哥们你答对了,这就是多态
毕老师视频中讲过的,Object是上帝,是超类,是所有类的父类
所以String是Object的”子民“,
"123456789"这个字符串是String的”子民“,那么它也是Object的”子民“

你看看毕老师讲的那个animal,cat,dog的例子就明白了
黑猫是cat,黑猫也是animal
黑狗是dog,黑狗也是animal

作者: 郭阳    时间: 2012-9-7 15:05
这是多态的体现形式,object 是所有类的父类,包括String类,所以定义接收值类型为object,函数就可以接收所有类型的参数。

至于你问的为什么要这样做,很简单,作者无非就想实现一个功能,无论传入一个String,int 还是boolean,我都把他打印出来。如果不用多态,而用函数重载来把每个接收值类型的函数都定义一遍是很麻烦的。

但是也存在一个异常发生的可能,如果传入的是一个对象,那么函数打印的就是一个对内存的地址值了,所以可以再定义一个异常使代码更富有健壮性。

作者: 杜鹏云    时间: 2012-9-7 15:08
必须是多态啊。。。再传参数时,父类引用(obj)指向子类对象("123456789"),但是你执行得默认是调用子类对象方法toSstring().
主要是看你的toString()是否被重写。。不同的obj 打印输出结果会不同
作者: 王宝龙    时间: 2012-9-7 21:42
问题已解决  谢谢大家!!




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