gpt4 book ai didi

java - ArrayList 中的继承和对象

转载 作者:行者123 更新时间:2023-12-02 10:41:52 25 4
gpt4 key购买 nike

好的。我对 Java 还很陌生,但我正在拼命学习。我已经走进了一条死胡同。作为学校的一部分,我正在制作一个库存程序,并且我有一个带有 4 个实例变量的父类(super class) Items。那里没问题。我有 4 个子类,其中两个是强制性的食品类,其中有另外 2 个变量和非食品类,其中还有一个变量。我的问题是这样的。

现在我正在使用 ArrayList(这是我到目前为止所知道的),但我正在认真考虑使用 map 或 linkedMap。

我的 ArrayList 基于我的父类(super class)项,但我在将子类变量放入我的 ArrayList 时遇到问题。知道如何做到这一点。使用相对简单的解决方案(记住我是新手)

我的 ID 还没有工作。本着商店术语的精神,我将其称为条形码。它是我的父类(super class)的一部分,我似乎无法在我的主类中初始化它。

//constructer from superclass

public Items (int barCode, String itemName, String itemSupplier, double itemPrice, int stock)
{
this.itemName = itemName;

barCode = GenerateBarCode();

this.itemSupplier = itemSupplier;

this.itemPrice = itemPrice;

this.stock = stock;

// getter method for barCode

protected int getBarCode()
{
return barCode;
}

// method for generating barcode

private int GenerateBarCode()
{
Random barCode = new Random();

int barCode1 = barCode.nextInt(100000);
return barCode1;
}

如果我需要更多代码,请告诉我。我正在努力让它变得更漂亮一点。

最佳答案

您的构造函数中有一个局部变量 barCode,它隐藏了您的实例成员(也称为 barCode)。参数实际上是局部变量,局部变量优先于字段。这个局部变量获取随机值,然后像所有局部变量一样在构造函数的末尾消失,留下您的字段也称为 barCode 及其原始值。

您可以通过更改名为 barCodeIn 的参数或将语句更改为 this.barCode =GenerateBarCode()

来修复此问题

然而,真正的解决方案是从 items 构造函数中删除 barCode 参数。

由于您是使用GenerateBarCode() 函数生成它,因此您实际上不需要从外部传递它。

关于java - ArrayList 中的继承和对象,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/52870760/

25 4 0