子对象在父类之间来回转换后是否会丢失其唯一属性

SK':

考虑以下类别:

public class Phone {
    private boolean has3g;

    public boolean has3g() {
        return has3g;
    }

    public void setHas3g(boolean newVal) {
        has3g = newVal;
    }
}

public class Blackberry extends Phone {
    private boolean hasKeyboard;

    public boolean hasKeyboard() {
        return hasKeyboard;
    }

    public void setHasKeyboard(boolean newVal) {
        hasKeyboard = newVal;
    }
}

如果我要创建的实例Blackberry,则将其强制转换为Phone对象,然后再强制转换为Blackberry,原始Blackberry对象会丢失其成员变量吗?例如:

Blackbery blackbery = new Blackberry();
blackbery.setHasKeyboard(true);

Phone phone = (Phone)blackbery;

Blackberry blackberry2 = (Blackberry)phone;

// would blackberry2 still contain its original hasKeyboard value?
boolean hasKeyBoard = blackberry2.hasKeyboard();
Zim-Zam O'Pootertoot:

强制转换完全不会改变基础对象-只是向编译器发送一条消息,可以将A视为B

也不必将if 强制A转换为Bif A extends B,即不需要将子类型强制转换为其超类型;如果是从超类型到子类型的,则只需要强制类型转换

本文收集自互联网,转载请注明来源。

如有侵权,请联系 [email protected] 删除。

编辑于
0

我来说两句

0 条评论
登录 后参与评论

相关文章

如何在Java中将字符串与UTF8字节数组之间来回转换

每次来回转换值时获得相同的结果

在Java中将对象与字符串进行来回转换的公认做法?

Java类对象是否唯一/单例?

JS映射来回转换值

Spring Data JPA规范:如何通过其子对象属性过滤父对象

SQLAlchemy:在内部和数据库格式之间来回转换列值

从size_t或uintptr_t来回转换指针是否会破坏严格的别名?

当对象被称为指向父类的指针时,它将丢失其成员的数据

Angular:在子组件中更新传递对象的属性会更新父组件,而不会更新其值,为什么?

如何通过使用其属性之一选择类对象

RValue引用分配给另一个指针后,是否会删除其绑定(非指针)对象?

将父类的const引用转换为派生的子对象

如何在布尔类型之间来回转换lambda表达式

OpenGL:push / pop矩阵VS来回转换

创建一个在类之间共享其属性的对象

来回转换超类和子类

在位置(插槽)和坐标之间来回转换

为什么Web API Action方法即使在转换父类后仍返回子属性的Json

父对象在JavaScript中是否知道其子对象?

Silverstripe:在cms字段之间来回转换数据库值

在没有零位数字的数字系统之间来回转换

为什么Python中的一个变量来回转换后会回到原来的ID?

我如何检查值属性是否等于对象键,如果它等于键值并为其添加一个类

将对象序列化到文件 - 来回转储 char* 是否安全?

在嵌套路由之间来回切换时,父组件的属性值会重置

将对象传递给子组件会丢失其属性和方法

Python 3 - 对类的属性的直接操作是否会覆盖其对象的相同属性,从而使属性成为纯静态的?[解决了]

从其属性访问类对象