Java继承场景下Game构造器未定义错误求助
解决Java继承中构造器未定义错误:The constructor Game(String, int, int, double, String) is undefined
问题根源
你在Store类实例化Game对象时,第四个参数的类型不匹配:
Game类的构造器定义中,第四个参数是**float类型**:public Game(String initGameName, int initPrice, int initInventory, float initReviews, String initCompanyBy)- 但你调用时传入的
4.5是**double类型**,Java不允许隐式将double转换为float(属于窄化类型转换,可能丢失精度),导致编译器找不到匹配的构造器,抛出错误。
修复方案
将调用构造器时的4.5改为4.5f(显式声明为float类型),修改Store类中的实例化代码:
// 修改前 Game item1 = new Game("Pokemon", 2000, 200, 4.5, "Nintendo"); // 修改后 Game item1 = new Game("Pokemon", 2000, 200, 4.5f, "Nintendo");
后续子类扩展注意事项
如果要实现Book、Electronics等其他子类,需确保:
- 子类构造器的参数类型、数量、顺序,与调用时传入的参数完全匹配
- 子类构造器通过
super()正确调用父类Item的构造器(你当前Game类的super()调用逻辑是正确的,自动填充了taxable=true和category="Video Game",符合子类的默认属性设计)
内容的提问来源于stack exchange,提问作者Andrew
相关产品推荐
相关产品推荐

