b*****n 发帖数: 2324 | 1 【 以下文字转载自 Java 讨论区 】
发信人: bruklyn (我爱布鲁克林), 信区: Java
标 题: 问一下这个cast在java里是怎么work的
发信站: BBS 未名空间站 (Fri Aug 10 03:13:39 2007), 转信
public Derived Clone()
{
Derived d = (Derived) super.clone();
... set other fields in d
return d;
}
这里我理解没错的话super.clone()应该返回一个Base class type的object
怎么可能cast成derived class type,而且还能set field呢?
有没有高人能解释一下?
谢谢! |
L*********r 发帖数: 92 | 2 it is the correct way to implement clone in java.
the logic is as following
1. object class will create the instance based on the run time class type
2. do memberwise copy
all the class along the hierarchy tree has to implement iclone and follow
same rule
the cast down is valid in this case
【在 b*****n 的大作中提到】 : 【 以下文字转载自 Java 讨论区 】 : 发信人: bruklyn (我爱布鲁克林), 信区: Java : 标 题: 问一下这个cast在java里是怎么work的 : 发信站: BBS 未名空间站 (Fri Aug 10 03:13:39 2007), 转信 : public Derived Clone() : { : Derived d = (Derived) super.clone(); : ... set other fields in d : return d; : }
|
b*****n 发帖数: 2324 | 3 我搞了一会,理解多了一些:
super是一个特殊的keyword,实际上跟this是一样的,但是用来call base class
overriden method,所以这里用this.clone()或者base.clone,是一样的,都是call
Object.clone(),在this pointer(Derived class type)上,所以不存在access
protected method的问题。
而且专物专用,super不可以用来干一些this可以干的事。
【在 L*********r 的大作中提到】 : it is the correct way to implement clone in java. : the logic is as following : 1. object class will create the instance based on the run time class type : 2. do memberwise copy : all the class along the hierarchy tree has to implement iclone and follow : same rule : the cast down is valid in this case
|
L*********r 发帖数: 92 | 4 What you said can work only if your class directly extend from object class.
你要再多理解一会.
【在 b*****n 的大作中提到】 : 我搞了一会,理解多了一些: : super是一个特殊的keyword,实际上跟this是一样的,但是用来call base class : overriden method,所以这里用this.clone()或者base.clone,是一样的,都是call : Object.clone(),在this pointer(Derived class type)上,所以不存在access : protected method的问题。 : 而且专物专用,super不可以用来干一些this可以干的事。
|