4-4编程练习

来源:4-4 编程练习

慕神0457710

2020-08-11 23:40:01

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

	public Car(){
		
	}
	
	//带参构造函数(参数为color和userName)
	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(Car one, Car two) {
		boolean flag = false;
		if(one==null || two==null) {
			flag = false;
			return flag;
		}
		if((one.getColor()==null||one.getColor()=="") 
				&& (one.getUserName()==null||one.getUserName()=="") 
				&& (one.getColor()==null||one.getColor()=="") 
				&& (one.getUserName()==null||one.getUserName()=="")) {
			flag = false;
			return flag;
		} 
		if(one.getColor().equals(two.getColor())
				 && one.getUserName().equals(two.getUserName())) {
			flag = true;
		}
		return flag;
	}
}
public class Taxi extends Car{
	//私有属性:所属公司( company)
	private String company;

	public Taxi(){
		
	}

	//调用父类的构造方法,完成属性赋值
	public Taxi(String company, String color, String userName) {
		super(color, userName);
		this.company = company;
	}

    //通过封装实现对私有属性的get/set操作
	public String getCompany() {
		return company;
	}

	public void setCompany(String company) {
		this.company = company;
	}

	//创建不允许重写的ride方法,描述为:**出租车是所属于***公司的。
	public final void ride(){
		System.out.println(super.getUserName()
				+"的出租车是所属于"+this.getCompany()+"公司的");
	}

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

	//重写toString方法,输出的表现形式不同(输出color,userName)
	@Override
	public String toString() {
		return "taxi的信息是:"+super.getUserName()+"拥有一辆"+super.getColor()
				+"的出租车";
	}
}
public class HomeCar extends Car{
	//私有属性:载客数(num)
	private int num;
    
	public HomeCar(){
		
	}
	//带参构造方法为所有属性赋值
	public HomeCar(int num,String color, String userName) {
		super(color, userName);
		this.num = num;
	}
	public int getNum() {
		return num;
	}

   //通过封装实现对私有属性的get/set操作
	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 display(int num) {
		System.out.println("家用汽车大多有"+num+"个座位");
	}
}
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(car1, car2));
		System.out.println("==================================");
        //实例化子类Taxi对象,并传入属性值
		Taxi taxi = new Taxi("长生","蓝色","张小泉");

		//调用ride和use方法
		taxi.ride();
		taxi.use();

		//输出重写toString后的taxi信息
		System.out.println(taxi.toString());
		System.out.println("==================================");
		//实例化子类HomeCar对象,并传入属性值
		HomeCar homeCar = new HomeCar(7,"紫色","孙二娘");

		//调用display方法及它的重载方法
		homeCar.display();
		homeCar.display(5);
	}

}


写回答

1回答

好帮手慕小班

2020-08-12

同学你好,根据题目要求,私家车HomeCar要求私家车类不允许有子类

建议对HomeCar类添加final。

http://img.mukewang.com/climg/5f3369b309ebd39604390076.jpg

其余内容完成不错,没有问题。

如果我的回答解决了你的疑惑,请采纳!祝学习愉快!

1

0 学习 · 16556 问题

查看课程