由买买提看人间百态

boards

本页内容为未名空间相应帖子的节选和存档,一周内的贴子最多显示50字,超过一周显示500字 访问原贴
Programming版 - 问一下这个cast在java里是怎么work的
相关主题
dynamic_cast operator in C++C++里,Base Class如何调用Derived Class的method
c++ dynamic castYou Don’t Know JS: this & Object Prototypes
C++ virtual function 定义在 derived class 会怎么样?C++ cast 小结
师傅们都出来看看吧,我也问个C++返回值问题。[合集] c++的dynamic_cast是如何实现的?
一个 C++ STL base type 的问题请教一个class design的问题
【讨论】问一道很简单的C++题。。。。 (转载)Java是不是要没落了
问一个inheritance的初级问题弱问一下
pointer to base class = new derived, what will happend??问两个问题,C++
相关话题的讨论汇总
话题: derived话题: class话题: cast话题: java话题: type
进入Programming版参与讨论
1 (共1页)
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可以干的事。

1 (共1页)
进入Programming版参与讨论
相关主题
问两个问题,C++一个 C++ STL base type 的问题
两个看来相似的问题【讨论】问一道很简单的C++题。。。。 (转载)
Help - C++ Debug Assertion Failed问一个inheritance的初级问题
java ArrayList 一问pointer to base class = new derived, what will happend??
dynamic_cast operator in C++C++里,Base Class如何调用Derived Class的method
c++ dynamic castYou Don’t Know JS: this & Object Prototypes
C++ virtual function 定义在 derived class 会怎么样?C++ cast 小结
师傅们都出来看看吧,我也问个C++返回值问题。[合集] c++的dynamic_cast是如何实现的?
相关话题的讨论汇总
话题: derived话题: class话题: cast话题: java话题: type