1.
讨论下java的一个工作原理:Object p = new Person();
Person p1 = (Person)p;
//成功的转型!Object p = new Object();
Person p1 = (Person)p;
//转型失败!这期间的原理是通过什么样的方法将Object转型成 Person 的呢?。 即原理!和流程2. String [] a = new String[] {"dfdsf","fsdfds","dfsdf"};Object o = a;
//程序没有错误! 是将整个数组看成是一个Object 了吗? 

解决方案 »

  1.   

    此回复为自动发出,仅用于显示而已,并无任何其他特殊作用
    楼主【bxdg42578670】截止到2008-07-06 16:37:27的历史汇总数据(不包括此帖):
    发帖的总数量:24                       发帖的总分数:460                      
    结贴的总数量:17                       结贴的总分数:350                      
    无满意结贴数:4                        无满意结贴分:110                      
    未结的帖子数:7                        未结的总分数:110                      
    结贴的百分比:70.83 %               结分的百分比:76.09 %                  
    无满意结贴率:23.53 %               无满意结分率:31.43 %                  
    楼主加油
      

  2.   

    1. 讨论下java的一个工作原理: 
    Object p = new Person(); 
    Person p1 = (Person)p; 
    //成功的转型! Object p = new Object(); 
    Person p1 = (Person)p; 
    //转型失败! 
    打个比方:一个兔子是动物。一个母兔子生出一个小兔子,指着这个小兔子说这个动物是兔子,成立;但是随便指着一个动物说,这个动物是兔子,则错误。这里指的动物不会因为说它是动物而从具体的动物变掉。
    同样,Object p = new Person(); 那个p还是Person类,所以给它转型没有问题。但是Object p = new Object()后,p是Object类,不是Person类。所以不能转型。
    给一个检测方法:
    Object p = new Person(); 
    System.out.println(p);
    System.out.println(p instanceof Person);
    System.out.println(p instanceof Object);
    第一个会打出p的类名加地址,可以看出那个Object p还是Person,而不是Object。第二三个打印语句会打印true,说明p是一个Object,也能认出来它是一个Person。
    即转型并不改变类型。
    2. String [] a = new String[] {"dfdsf","fsdfds","dfsdf"}; Object o = a; 
    //程序没有错误! 是将整个数组看成是一个Object 了吗? 
    所有对象都是Object,数组也是对象,所以数组也是一种Object
      

  3.   

    第二个问题是编译不通过的。可以用Object[] obj = a;或者Object obj = (Object)a;来修正。
      

  4.   

    sorry,刚才搞错了,请版主把这两个帖子删掉吧。
      

  5.   


    3楼的回答 我很满意,  说的非常的好, 转型并不代表改变类型, 第2题的回答好象并不能接受!当然我也有写误的地方, 在这里进行更正一下: Object o = (Object) a;数组严格来说应该不是一种Object , 而是一组Object!Object 不存在下标功能!~~
      

  6.   

    1.Object p = new Person();
    Person p1 = (Person)p;
    //成功的转型! 
    这样是典型的多态
    你看一下多态的内容
    可以强制类型转换是因为
    Person和Object有继承关系
    2.java的数据类型只有两种
    一种是基本数据类型
    一种是引用数据类型
    数组就是一个对象
      

  7.   

    没发现
    Object o = new Object();
    String[] a = new String[6];
    这两句很像吗?
    Java 中所有数组都是“数组类”的实例,而所有类都直接或间接继承自 Object 类,所以可以将子类对像(此处的 String 数组对像)的引用赋给超类 Object 类型的对像变量 o。
      

  8.   

    1.Object p = new Person(); 
    Person p1 = (Person)p; 
    //成功的转型! 
    这样是典型的多态 
    你看一下多态的内容 
    可以强制类型转换是因为 
    Person和Object有继承关系 
    2.java的数据类型只有两种 
    一种是基本数据类型 
    一种是引用数据类型 
    字符数组名就是字符数组对象的引用,简称为一个对象,该对象又引用了一组对象,这中间都是引用关系,可以把他们的内存画出来比较好理解
      

  9.   

    1. 
    讨论下java的一个工作原理: Object p = new Person(); 金丝猴是猴子 没错
    Person p1 = (Person)p; 是猴子的金丝猴肯定是金丝猴(呵呵,有点罗嗦)
    //成功的转型! Object p = new Object(); 畜生是畜生
    Person p1 = (Person)p; 畜生是猴子(错)
    //转型失败! 
    2. String [] a = new String[] {"dfdsf","fsdfds","dfsdf"}; Object o =(Object) a; java中只有两种数据类型,数组属于引用类型。object是所有引用类型的父类
      

  10.   

    Object p = new Person(); ------->Object可以看成是动物,此话理解为 人是动物的一种吧
    Person p1 = (Person)p;   
    //成功的转型! Object p = new Object(); 
    Person p1 = (Person)p;  ----------->此句相当于说  动物是人的一种....囧rz  ,当然不妥 
    //转型失败! 
      

  11.   

    2. String [] a = new String[] {"dfdsf","fsdfds","dfsdf"}; Object o = a; 
    //程序没有错误! 是将整个数组看成是一个Object 了吗? 我靠,所以对象的祖宗是Object,数组当然是Object的孩子
      

  12.   

    1 rtti
    2 数据是一种引用对象