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

 找回密码
 加入黑马

QQ登录

只需一步,快速开始

在字符串打印长度,索引字符串当中有这样一个程序。


public void  method()
{
  String str = "abcd";
  sop(str.length());
   //System.out.println(str.length());//当然可以这么做,但是,如果打印多条语句的话 会显得程序比较拖沓
}

public void sop(Object obj)
{
    System.out.println(obj);
}

我的问题是:在这里面为什么在外面定义一个sop() 里面是Object的对象?
                  

7 个回复

倒序浏览
为什么要传一个Object对象呢?
当然你完全可以传一个String对象,因为你传递的是字符串
但都知道Object是所有类的根基类,如果使用Object的话,不管你传递的什么参数,都可以使用
提高了程序的扩展性

评分

参与人数 1技术分 +1 收起 理由
黄奕豪 + 1 赞一个!

查看全部评分

回复 使用道具 举报
Object是所有类的的父类也就是毕老师所说的上帝。所以在传递参数是这个地方定义为Object就可以接受所有的类。因为要传什么样的参数你定义打印功能的时候你也不知道。定义为Objiect就不用考虑这么多了。来者不拒啊!查看Api文档:类 Object 是类层次结构的根类。每个类都使用 Object 作为超类。所有对象(包括数组)都实现这个类的方法。
其实我觉得这里也就是一个多态的体现。

评分

参与人数 1技术分 +1 收起 理由
黄奕豪 + 1 赞一个!

查看全部评分

回复 使用道具 举报
因为这个sop方法,当打印的类不确定是什么的时候 可以定义个Object类,就相当一个万能钥匙的作用。
回复 使用道具 举报
呵呵,这样定义是因为Object是所有类的基类,Object obj这种参数定义是在不确定方法参数的情况下的一种多态表现形式。即这个方法可以传递多个参数,这个参数的个数是不确定的。这样你在方法体中需要相应的做些处理。因为Object是基类,所以使用Object obj这样的参数形式,允许一切继承自Object的对象作为参数。

回复 使用道具 举报
class  Test13
{
        public static void main(String[] args)
        {
                method();
        }
        public static void  method()
   {
  String str = "abcd";
  sop(str.length());//str.length()返回类型是int类型,也就是说int类型的整数赋给了obj (object 对象是根,是任何对象的根,任何类都是Object的子类,所以这里用的是多态,父类 //引用指向子类对象)
                                       
   //System.out.println(str.length());//当然可以这么做,但是,如果打印多条语句的话 会显得程序比较拖沓
   }

public static void sop(Object obj)
{
    System.out.println(obj);
}
}
回复 使用道具 举报
   sop(str.length()); //这个是调用下面的方法,而下面的方法就是打印字符串的长度。
  //System.out.println(str.length()); //和这个一样,只不过你是把这个封装了一个方法,在调用。

public void sop(Object obj) //被调用      //为什么传Object   ,  我想你应该是跟着毕老师写的,  Obejct 是所有类型的父类 ,也就是说Object 想当于,String类型,int 类型, byte 类型 。。。。。 等 也就是说你传个Obejct, 就想当于你传任何类型都可以了,  String = "abcd".  int =29。。。。等 ;  都可以显示出你打印的长度。
{
    System.out.println(obj);
}
回复 使用道具 举报

本帖最后由 何旭栋 于 2012-6-12 19:24 编辑

System.out.println打印的都是字符串,而Object类中有个toString(),可以将所有对象转为字符串输出,因为java有多态性,并且Object类是所有类的父类,所以Object作为参数传递,能够接收任何类型对象打印
回复 使用道具 举报
您需要登录后才可以回帖 登录 | 加入黑马