请使用面向对象的思想,实现出租车和家用轿车的信息描述。

程序运行参考效果图如下:

任务

要求:

1、 根据出租车和家用轿车的共性,抽取父类Car

属性:车的颜色color、车主姓名userName

方法:

1) 带参构造函数(参数为color和useName)

2) 创建无参无返回值得方法use(描述内容为:我是机动车!)

3) 重写equals方法,比较两个对象是否相等(比较color,userName)

2、子类taxi

属性:所属公司( company)

方法:

1) 调用父类的构造方法,完成属性赋值

2) 创建不允许重写的ride方法,描述为:出租车是所属于在*公司的。

3) 重写父类use方法,描述为:出租车是提高市民生活质量的重要条件之一

4) 重写toString方法,输出的表现形式不同(输出color,userName)

3、子类:私家车HomeCar

属性:载客数(num)

方法:

1) 带参构造方法为所有属性赋值

2) 创建无参无返回值的display方法,表现为:拥有的颜色的私家车有**座位

3) 重载要求(2)中的display方法(带参数num),描述为:家用汽车大多有**个座位

4) 要求私家车类不允许有子类

4、测试类,运行效果参照效果图:

1) 实例化2个父类对象,并传入两组相同的参数值

2) 调用父类use方法

3) 测试重写equals方法,判断两个对象是否相等

4) 实例化子类对象,并传入相关参数值

5) 调用子类ride方法和use方法

6) 测试重写toString方法,输出子类对象的信息

7) 实例化HomeCar类对象,并传入相关参数值

8) 调用子类的display和他的重载方法

package me.feihong.cartwo;

public class Car {
    //属性:车的颜色color、车主姓名userName
    private String color;
    private String userName;

public Car(){
    
}
//带参构造函数(参数为color和useName)
public Car(String color,String userName){
    this.color=color;
    this.userName=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 me.feihong.cartwo;

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方法,描述为:**出租车是所属于***公司的。
final public void ride() {
    System.out.println(getUserName()+"的出租车是所属于"+getCompany()+"公司的。");
}

//重写父类use方法,描述为:出租车是提高市民生活质量的重要条件之一
public void use() {
    System.out.println("出租车是提高市民生活质量的重要条件之一");
}    

//重写toString方法,输出的表现形式不同(输出color,userName)
public String toString() {
    return "taxi的信息是:"+getUserName()+"拥有一辆"+getColor()+"的出租车";
}    



}
package me.feihong.cartwo;

public final class HomeCar extends Car{
    //私有属性:载客数(num)
    private int num;
    

public HomeCar(){
    
}
//带参构造方法为所有属性赋值
public HomeCar(String color,String useName,int num){
    color=getColor();
    useName=getUserName();
    this.num=num;
}

 //通过封装实现对私有属性的get/set操作
public int getNum() {
    return num;
}
public void setNum(int num) {
    this.num = num;
}

//创建无参无返回值的display方法,表现为:**拥有的**颜色的私家车,有**座位
public void display() {
    System.out.println(getUserName()+"拥有的"+getColor()+"颜色的私家车,有"+getNum()+"座位");
}

//重载display方法(带参数num),描述为:家用汽车大多有**个座位
public void display(int num) {
    System.out.println("家用汽车大多有"+getNum()+"个座位");
}    

}
package me.feihong.cartwo;

public class Test {
    public static void main(String[] args){ 
        //实例化父类对象,并传入两组相同的属性值
        Car car1=new Car("白色","Xming");
        Car car2=new Car("白色","Xming");
        

​    //调用父类use方法
​    car1.use();

​    //通过重写equals方法,比较两个对象是否相等
​    boolean flag=car1.equals(car2);
​    System.out.println("car1和car2的引用比较:"+flag);

​    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 hc=new HomeCar();
​    hc.setColor("紫色");
​    hc.setUserName("孙二娘");
​    hc.setNum(7);
​    //调用display方法及它的重载方法
​    hc.display();
​    hc.display(5);
​    
}

}
最后修改:2019 年 12 月 31 日 11 : 32 PM
如果觉得我的文章对你有用,请随意赞赏