首页 诗词 字典 板报 句子 名言 友答 励志 学校 网站地图
当前位置: 首页 > 教程频道 > JAVA > J2SE开发 >

大家伙儿帮忙看下这个

2011-12-26 
大家帮忙看下这个classStudentimplementsCloneable{StringnameintageStudent(Stringname,intage){this.n

大家帮忙看下这个
class   Student   implements   Cloneable  
{  
String   name;  
int   age;  
Student(String   name,int   age)  
{  
this.name=name;  
this.age=age;  
}  
public   Object   clone()  
{  
Student   o=null;  
try  
{  
o=(Student)super.clone();  
}  
catch(CloneNotSupportedException   e)  
{  
System.out.println(e.toString());  
}  
return   o;  
}  
}  
这段代码为一个克隆的代码,在最后的那个   return中返回的是Student类型而方法的类型   却是Object返回的类型不一致但是编译却通过了。把Object改为Student类型编译反而不行   这是为什么呢   ?不是说一个方法的返回类型要与方法的类型一致么   ?

[解决办法]
"把Object改为Student类型编译反而不行 这是为什么呢 ? "


我承认我没看懂。。
你这个问题好像是 父类的变量可以引用子类对象,而子类变量不可以引用父类对象。任何一个类都是object的子类
[解决办法]
public Object clone(){}这个方法是覆盖了Object类中的public Object clone(){}方法
如果在Student类中,改成public Student clone(){}那么,在Student类中就有了
public Object clone(){}和public Student clone(){}这两个方法,
而方法是不可以用返回值来区分的.所以编译器会报错.
[解决办法]
Q.return中返回的是Student类型而方法的类型却是Object
A:Object是所有类的祖先,所以从多态的角度看,Student对象也是一个Object对象,所以把一个
Strudent类的引用赋给一个指向Object的引用是合理的。这就是多态的一个应用


热点排行