将派生类转换为父类时,是否会丢失数据? [英] When casting a derived class to a parent class do you lose data?

查看:143
本文介绍了将派生类转换为父类时,是否会丢失数据?的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!

问题描述

例如

public class parentClass{
     //stuff done
 }

public class derivedClass extends parentClass{
    // has data that parentClass does not
}

// some function 
public parentClass foo(parentClass myVar){
    return myVar
}

// ... later ...

{
  ...
   derivedClass dClass1 = new derivedClass();

   parentClass pClass = foo(dClass1);

   derivedClass dClass2 = (derivedClass)pClass;
 ...
}

dClass1和dClass2之间的数据丢失了吗?我不确定,我认为答案是否定的。我知道如果我使用双打和整数然后数据丢失,但这不是使用指针和对象,所以我不确定。

Was data lost between dClass1 and dClass2? I am not sure, I think the answer is no. I know that if I was using doubles and ints then data IS lost, but that isn't using pointers and objects, so I wasn't sure.

推荐答案

您无法投射对象,因此无法丢失数据。您所能做的就是将引用转换为对象,这不会以任何方式改变它。

You cant cast objects so you can't lose data. All you can do is cast the reference to an object and this doesn't alter it in any way.

这篇关于将派生类转换为父类时,是否会丢失数据?的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!

查看全文
登录 关闭
扫码关注1秒登录
发送“验证码”获取 | 15天全站免登陆