【问题标题】:Java - Superclass/SubclassJava - 超类/子类
【发布时间】:2012-05-16 16:23:46
【问题描述】:

这里有个小问题:

public class Item extends ItemManufacturer
{
// Attributes
private String itemcode;
private String itemname;
private String description;
private String style;
private String finish;
private float  unitprice;
private float  stock;

public void item(String suppliercodeIn, String suppliernameIn, String addressIn, String itemcodeIn, String itemnameIn, String descriptionIn, 
            String styleIn, String finishIn, float unitpriceIn, float stockIn)
  {
       super ( suppliercodeIn, suppliernameIn, addressIn );

       itemcode = itemcodeIn;
       itemname = itemnameIn;
       description = descriptionIn;
       style = styleIn;
       finish = finishIn;
       unitprice = unitpriceIn;
       stock = stockIn;
  }

我收到以下错误消息:

对 super 的调用必须是构造函数中的第一个语句。

有人愿意帮我解决这个问题吗?

在玩弄这些类之后,我遇到了一个额外的错误。

// Create a Item oject
Item item = new Item();

我正在使用一个名为 items 的数据库和 item 的表名。

【问题讨论】:

  • 另外,如果名称有意义,我对类层次结构持怀疑态度。

标签: java subclass superclass


【解决方案1】:

这就是问题所在:

public void item(...)

这不是 Item 类的构造函数 - 它是一个名为 item 的 void 方法。应该是:

public Item(...)

请注意,Java 区分大小写,构造函数没有声明的返回类型; 只是可访问性,后跟类名,后跟参数列表。

【讨论】:

  • @silverj2k7:您确定构造函数的名称与类的名称匹配吗? item 的情况你解决了吗?
  • public class Item extends ItemManufacturer { // 属性 private String itemcode;私有字符串项目名称;私有字符串描述;私有字符串样式;私人字符串完成;私人浮动单价;私人流通股; /* * 项目的构造方法 */ public Item(String suppliercodeIn, String suppliernameIn, String addressIn, String itemcodeIn, String itemnameIn, String descriptionIn
  • 很抱歉,是的。我确实在某个时候修复了它,但后来我需要将项目类别分成两个类别。
【解决方案2】:

我怀疑有错别字。你的构造函数应该被称为Item 而不是item。 (而且构造函数不返回任何东西,甚至void。)

至于new 表达式:您需要在创建Item 的新实例时传入所有这些参数。

Item item = new Item("234SD23", "SuperSupplier", "21 SO Drive", ...);

【讨论】:

  • 这意味着你还没有为你的 ItemManufacturer 类定义这样的构造函数(或者也可能有错别字)。
  • 感谢您的帮助,我在 item 和 itemmanufacturer 类中都犯了这个错误。
  • 第二个最严重的错误 this this: // 创建一个项目 oject Item item = new Item();找不到符号 - 构造函数 Item()
  • 已编辑。您似乎需要阅读一本好的 Java 书籍和/或教程,这是非常非常基础的。
  • 当你拥有所有必需的字符串时,你将不得不重新设计或创建 Item 对象。
【解决方案3】:

阅读本文,

  1. 如果没有错字,并且 item 是一个方法,那么 super() 将不起作用。你需要做 super.item();

  2. 如果有错别字,并且它的Item不是item,那么就没有返回类型,

    例如:

    public Item (String suppliercodeIn, String suppliernameIn, String addressIn,
        String itemcodeIn, String itemnameIn, String descriptionIn, 
        String styleIn, String finishIn, float unitpriceIn, float stockIn){
    
    }
    

【讨论】:

  • 所以没有错字,所以 super.item();会是为了?抱歉,项目太多了,我现在很容易混淆 =/
  • @silverj2k7:空间无关紧要。 Kumar 的第一点是您可能想要在超类中调用一个名为item 的方法。但这不是你想要的。
  • Itementry 屏幕是我尝试创建引用子类的新对象的地方。
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 2019-06-29
  • 1970-01-01
  • 1970-01-01
  • 2015-03-09
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多