Java入门求助:在HouseDriver类创建多个不同House对象遇问题
问题解决步骤
你的代码存在变量名不匹配、构造函数使用错误等问题,逐个修正后即可创建目标对象:
1. 修正House类的错误
House类里多处出现未定义变量、成员变量引用错误的问题,修正后的代码如下:
public class House { private String houseName; private int houseAge; // 构造函数:用this区分类成员变量和方法参数 public House(String houseName, int houseAge) { this.houseName = houseName; this.houseAge = houseAge; } public String getName() { return houseName; } // 修正getAge方法,返回类成员变量houseAge public int getAge() { return houseAge; } // 修正setName方法的赋值逻辑 public void setName(String houseName) { this.houseName = houseName; } }
错误点说明:
- 构造函数中你使用了未定义的
nameIn、ageIn,需要用this.成员变量名来明确指代类的成员变量,将传入的参数赋值给它 getAge()方法返回的ageIn是未定义变量,应返回类中声明的houseAgesetName方法同样存在参数名不匹配的问题,用this修正即可
2. 修正HouseDriver类,创建3个带不同参数的House对象
你原本使用了无参的new House(),但自定义构造函数后,Java不会自动生成无参构造,因此创建对象必须传入String和int类型的参数。修正后的代码:
public class HouseDriver { public static void main(String[] args) { // 创建3个参数不同的House对象 House house1 = new House("湖畔小屋", 5); House house2 = new House("山间别墅", 20); House house3 = new House("市区公寓", 2); // 验证对象属性是否正确 System.out.println(house1.getName() + " 房龄:" + house1.getAge()); System.out.println(house2.getName() + " 房龄:" + house2.getAge()); System.out.println(house3.getName() + " 房龄:" + house3.getAge()); } }
错误点说明:
- 当类中存在自定义构造函数时,系统不再默认提供无参构造,因此必须按照自定义构造函数的要求传入对应类型的参数
运行结果
执行HouseDriver后会输出:
湖畔小屋 房龄:5 山间别墅 房龄:20 市区公寓 房龄:2
内容的提问来源于stack exchange,提问作者John Elsi
相关产品推荐
相关产品推荐

