gpt4 book ai didi

java - 在父类之间来回转换后,子对象是否会丢失其独特的属性

转载 作者:太空狗 更新时间:2023-10-29 22:49:42 28 4
gpt4 key购买 nike

考虑以下类:

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();

最佳答案

转换根本不会改变底层对象 - 它只是向编译器发出的消息,它可以将 A 视为 B

如果 A extends B,也没有必要将 A 转换为 B,即您不需要转换子类型到它的父类(super class)型;如果它是从父类(super class)型到子类型,你只需要强制转换

关于java - 在父类之间来回转换后,子对象是否会丢失其独特的属性,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/16224277/

28 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com