黑马程序员技术交流社区
标题:
多态Object的问题
[打印本页]
作者:
王宝龙
时间:
2012-9-7 14:07
标题:
多态Object的问题
本帖最后由 王宝龙 于 2012-9-9 23:29 编辑
class InputDemo
{
public static void main(String [] arge)
{
sop("123456789");
}
public static void sop(Object obj)
{
System.out.println(obj);
}
}
复制代码
这样一段代码定义了一个用于输出的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