public Object clone()
{
Student o=null;
try
{
o=(Student)super.clone();
}
catch(CloneNotSupportedException e)
{
System.out.println(e.toString());
}
o.p=(Professor)p.clone();
return o;
}
为什么o是Student类型都可以return

解决方案 »

  1.   

    因为student是Object的子类型,当然可以返回了。
      

  2.   

    同意上面的意见,因为JAVA中任何类型的父类都是OBJECT,你方法既然返回的是OBJECT类型,当然就可以return student
      

  3.   

    你这个方法返回的是一个Object类型  Student是Object的子类 Student的对象当然可以被返回成Object了
      

  4.   

    继承关系可以表术为 "is-a" 关系,例如:
    class Sub extends Parent
    则他们的关系可以表示为: Sub is a Parent.
    又因为所有的类都继承自Object,所以可得: Student is a Object.
    既然Student 是 一个 Object,因此当方法返回类型是Object时可以return Student(因为它 是 一个 Object)
      

  5.   

    JDK 的注释,
     Class Object is the root of the class hierarchy. 
     Every class has Object as a superclass. All objects, 
     including arrays, implement the methods of this class. 
      

  6.   

    因为任何类都是Object的子类 ,Student是Object的子类, 你的返回值是Object,当然可以返回Student;
    例如:所有人都能呼吸,人能呼吸。具体到某1个人也一样能呼吸。如果人能呼吸,那就不存在不能呼吸的,某个人。所以某个人也必须能呼吸。
      

  7.   

    你的返回类型是Object,不管什么对象都可以返回的。因为所有对象都从Object类继承而来。