继承 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 星