gpt4 book ai didi

Java LinkedList 对象继承重写

转载 作者:行者123 更新时间:2023-12-01 23:49:36 24 4
gpt4 key购买 nike

我对Java相当陌生,我有一个ObjectType类的linkedList,我将ObjectType的各种子类添加到linkedList中,当我拉出对象时,我被迫向它传递一种ObjectType类型,并且似乎失去子类的继承属性......任何人都可以为我阐明这一点吗?

//LIST STORING OBJECT
public class MyObjectList{

private LinkedList<ObjectType> queue = new LinkedList<ObjectType>();

public MyObjectList()
{
queue = new LinkedList<ObjectType>();
}

public ObjectType addObject(ObjectType myObject)
{
queue.add(myObject);
return myObject;
}

}

//MY BASIC OBJECT
public abstract class ObjectType {

public int objectWidth;

public ObjectType () {}
}

//MY EXTENDED OBJECT BOX
public abstract class Box extends ObjectType {

public int objectWidth = 50;

public ObjectType () {}
}

//MY EXTENDED OBJECT PLATE
public abstract class Box extends ObjectType {

public int objectWidth = 25;

public Box() {}
}

//好的,现在如果我将一堆盒子添加到我的盒子列表中,它们的 objectWidth 将设置为零!

mList = new MyObjectList;

for (int i=0;i<10;i++)
{
mObject = mList.addObject( new Box );
}

重要的是要记住,我的列表最终应该由不同的对象类型组成,因此 baseObject 需要保持原样。如果可能的话!

最佳答案

您无法覆盖 Java 中的字段,因此如果您想在子类中将 objectWidth 设置为 50,您可以这样做:

public abstract class ObjectType {
public int objectWidth;
public ObjectType () {}
}

public abstract class Box extends ObjectType {
public Box () {
objectWidth = 50;
}
}

关于Java LinkedList 对象继承重写,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/16499107/

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