继承 5-2编程
public class Car { //属性:车的颜色color、车主姓名userName private String color; private String userName; public Car(){ } //带参构造函数(参数为color和useName) public Car(String userName,String color){ 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(Object obj) { if(obj==null) return false; Car temp=(Car)obj; if(this.getColor().equals(temp.getColor())&&this.getUserName().equals(temp.getUserName())) return true; else return false; } // 重载 public boolean equals(Car car) { if(car==null) return false; if(this.getColor().equals(car.getColor())&&this.getUserName().equals(car.getUserName())) return true; else return false; } } public class HomeCar extends Car{ //私有属性:载客数(num) private int num; public HomeCar(){ } //带参构造方法为所有属性赋值 public HomeCar(String userName,String color,int num){ super(userName,color); this.setNum(num); } public HomeCar(int 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()+"拥有的"+super.getColor()+"颜色的私家车,有"+this.getNum()+"座位"); } //重载display方法(带参数num),描述为:家用汽车大多有**个座位 public void displa() { // this.setNum(5); System.out.println("家用汽车大多有"+this.getNum()+"个座位"); } } public class Test { public static void main(String[] args) { //实例化父类对象,并传入两组相同的属性值 Car ca1 = new Car("蓝色","张小泉"); Car ca2 = new Car("蓝色","张小泉"); //调用父类use方法 ca1.use(); //通过重写equals方法,比较两个对象是否相等 boolean f= ca1.equals(ca2); System.out.println(f); System.out.println("=================================="); //实例化子类Taxi对象,并传入属性值 Taxi ta=new Taxi("张小泉","蓝色","长生公司"); //调用ride和use方法 ta.ride(); ta.use(); //输出重写toString后的taxi信息 System.out.println(ta.toString()); System.out.println("=================================="); //实例化子类HomeCar对象,并传入属性值 HomeCar ho1= new HomeCar("张二娘","紫色",7); HomeCar ho2= new HomeCar(5); //调用display方法及它的重载方法 ho1.display(); ho2.displa();
老师,我想用带参构造方法来给HomeNum的display的重载方法赋值,为什么结果是0?
正在回答
同学你好,在调用无参的构造方法,diaplay方法可以将传入的参数,直接输出,例如:
调用无参的构造方法, HomeCar ho2= new HomeCar();
在diaplay有参数的方法中,直接将传入的参数输出
得到的输出结果:
如果我的回答解决了你的疑惑,请采纳。祝:学习愉快~
1、是不是方法里有参数,所以要调用无参构造方法?
2、实际上,方法我是这样写的:
public void display(int num) {
this.setNum(5);
System.out.println("家用汽车大多有"+this.getNum()+"个座位");
}
然后,调用是这样写的:
//实例化子类HomeCar对象,并传入属性值
HomeCar ho1= new HomeCar("张二娘","紫色",7);
HomeCar ho2= new HomeCar();
//调用display方法及它的重载方法
ho1.display();
ho2.display(5);
运行结果是对的,但我总觉得哪里不对,既然我在ho2.display(5);赋了值,为什么还要写this.setNum(5);(没办法,是我试出来的,不写this.setNum(5);结果也是0)。。。。
到底哪里不对?正确的又应该怎么写?
- 参与学习 人
- 提交作业 3802 份
- 解答问题 11489 个
本阶段带你迈入Java世界,学习Java必备基础知识,基础语法、面向对象思想以及常用工具类的使用。
了解课程
恭喜解决一个难题,获得1积分~
来为老师/同学的回答评分吧
0 星