练习打卡~请老师检查~
来源:4-4 编程练习
慕设计7678942
2020-06-09 14:20:34
package practice4_4;
public class Test {
public static void main(String[] args){
//实例化父类对象,并传入两组相同的属性值
Car car1=new Car("黄色","未知");
Car car2=new Car("黄色","未知");
//调用父类use方法
car1.use();
//通过重写equals方法,比较两个对象是否相等
System.out.println("Car1和Car2的引用比较: "+car1.equals(car2));
System.out.println("==================================");
//实例化子类Taxi对象,并传入属性值
Taxi taxi=new Taxi("蓝色","张小泉");
taxi.setCompany("长生公司");
//调用ride和use方法
taxi.ride();
taxi.use();
//输出重写toString后的taxi信息
System.out.println(taxi.toString());
System.out.println("==================================");
//实例化子类HomeCar对象,并传入属性值
HomeCar home=new HomeCar("紫色","孙二娘",7);
//调用display方法及它的重载方法
home.display();
home.dislay(5);
}
}
====================================
package practice4_4;
public class Car {
//属性:车的颜色color、车主姓名userName
private String color;
private String userName;
public Car(){
}
//带参构造函数(参数为color和userName)
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(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;
}
}
===============================
package practice4_4;
public class Taxi extends Car{
//私有属性:所属公司( company)
private String company;
public Taxi(){
}
//调用父类的构造方法,完成属性赋值
public Taxi(String color,String userName) {
super(color,userName);
}
//通过封装实现对私有属性的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() {
return "Taxi的信息是: "+this.getUserName()+"拥有一辆"+this.getColor()+"的出租车";
}
}
======================================
package practice4_4;
public final 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(this.getUserName()+"拥有的"+this.getColor()+"颜色的私家车,有"+this.getNum()+"座位");
}
//重载display方法(带参数num),描述为:家用汽车大多有**个座位
public void dislay(int num) {
System.out.println("家用汽车大多有"+num+"个座位");
}
}
1回答
同学你好,同学的代码有以下几个地方需要优化一下
1,父类:题目中要求结合注解完成equals方法的重写,同学没有使用注解,修改后如下

2,子类taxi:重写use方法和toString方法,也是需要结合注解完成

子类taxi:调用父类的构造方法完成赋值,应该加上子类的属性,修改如下

3, 子类HomeCar:题目中要求重载display方法,同学重载后的方法名少写了个p,如下

4,测试类:实例化子类Taxi对象时,赋值可以通过全参构造为属性赋值

如果我的回答解决了你的疑惑,请采纳,祝学习愉快~
相似问题