老师,在调用HomeCar类display方法及它的重载方法时为什么最后的座位数相同
public class Car { // 属性:车的颜色color、车主姓名userName private String color; private String userName; public Car() { } // 带参构造函数(参数为color和useName) public Car(String color, String userName) { this.setColor(color); this.setUserName(userName); } //通过封装实现对私有属性的get/set操作 public String getColor() { return color; } public void setColor(String color) { this.color = color; } public String getUserName() { return userName; } public void setUserName(String userName) { this.userName = userName; } // 创建无参无返回值得方法use(描述内容为:我是机动车!) public void use() { System.out.println("我是机动车!"); } // 重写equals方法,比较两个对象是否相等(比较color,userName) public boolean equals(Car obj) { if (obj == null) { return false; } if (this.getColor().equals(obj.getColor()) && this.getUserName().equals(obj.getUserName())) { return true; } else { return false; } } }
public class Taxi extends Car { // 私有属性:所属公司( company) private String company; public Taxi() { } // 调用父类的构造方法,完成属性赋值 public Taxi(String color, String userName, String company) { this.setColor(color); this.setUserName(userName); this.setCompany(company); } //通过封装实现对私有属性的get/set操作 public String getCompany() { return company; } public void setCompany(String company) { this.company = company; } // 创建不允许重写的ride方法,描述为:**出租车是所属于***公司的。 public final void ride() { System.out.println(this.getUserName() + "出租车是所属于" + this.getCompany() + "公司的。"); } // 重写父类use方法,描述为:出租车是提高市民生活质量的重要条件之一 public void use() { System.out.println("出租车是提高市民生活质量的重要条件之一"); } // 重写toString方法,输出的表现形式不同(输出color,userName) public String toString() { String str = "taxid的信息是:" + this.getUserName() + "拥有一辆" + this.getColor() + "的出租车"; return str; } }
public class HomeCar extends Car { // 私有属性:载客数(num) private int num; public HomeCar() { } // 带参构造方法为所有属性赋值 public HomeCar(String color,String userName,int num) { this.setColor(color); this.setUserName(userName); this.setNum(num); } // 通过封装实现对私有属性的get/set操作 public int getNum() { return num; } public void setNum(int num) { this.num = num; } // 创建无参无返回值的display方法,表现为:**拥有的**颜色的私家车,有**座位 public void display() { System.out.println(super.getUserName()+ "拥有的" + this.getColor() + "颜色的私家车,有" + this.getNum() + "座位"); } // 重载display方法(带参数num),描述为:家用汽车大多有**个座位 public void display(int num) { System.out.println("家用汽车大多有" + this.getNum() + "个座位"); } }
public class Test { public static void main(String[] args) { // 实例化父类对象,并传入两组相同的属性值 Car one = new Car("蓝色", "张小泉"); Car one1 = new Car("蓝色", "张小泉"); // 调用父类use方法 one.use(); // 通过重写equals方法,比较两个对象是否相等 System.out.println("car1和car2的引用比较:" + one.equals(one1)); System.out.println("=================================="); // 实例化子类Taxi对象,并传入属性值 Taxi two = new Taxi("蓝色", "张小泉", "长生公司"); // 调用ride和use方法 two.ride(); two.use(); // 输出重写toString后的taxi信息 System.out.println(two.toString()); System.out.println("=================================="); // 实例化子类HomeCar对象,并传入属性值 HomeCar three = new HomeCar("蓝色", "孙二娘", 7); // 调用display方法及它的重载方法 three.display(); three.display(5); } }
2
收起
正在回答
1回答
同学你好,在HomeCar类中的无参的display方法和有参的display方法,输出的座位属性值都是当前对象的这个属性值哦--> this.getNum()!所以输出的座位数是一样的!
public void display() { System.out.println(super.getUserName()+ "拥有的" + this.getColor() + "颜色的私家车,有" + this.getNum() + "座位"); } // 重载display方法(带参数num),描述为:家用汽车大多有**个座位 public void display(int num) { System.out.println("家用汽车大多有" + this.getNum() + "个座位"); }
修改建议如下; // 修改重载display方法,输出座位数是传入的参数!
public void display(int num) {
System.out.println("家用汽车大多有" + num+ "个座位");
}
这样两个diaplay方法输出的座位数就不同了哦!
如果我的回答解决了你的疑惑,请采纳。祝:学习愉快~
1. Java 零基础入门
- 参与学习 人
- 提交作业 3802 份
- 解答问题 11489 个
本阶段带你迈入Java世界,学习Java必备基础知识,基础语法、面向对象思想以及常用工具类的使用。
了解课程
恭喜解决一个难题,获得1积分~
来为老师/同学的回答评分吧
0 星