老师,帮我看下是否还可以进行优化?

来源:2-23 编程练习

猿人慕

2019-11-25 16:39:40

package com.imooc.cyclemanger;

public class NonMotor {
    // 私有属性:品牌、颜色、轮子(默认2个)、座椅(默认 1个)
	private String brand;
	private String color;
	private int wheelNum = 2;
	private int chairNum = 1;
	// 无参构造方法
	public NonMotor() {

	}

	// 双参构造方法,完成对品牌和颜色的赋值
	public NonMotor(String brand, String color) {
		super();
		this.brand = brand;
		this.color = color;
	}
	// 四参构造方法,分别对所有属性赋值
	public NonMotor(String brand, String color, int wheelNum, int chair) {
		super();
		this.brand = brand;
		this.color = color;
		this.wheelNum = wheelNum;
		this.chairNum = chair;
	}
   // 公有的get***/set***方法完成属性封装
	public String getBrand() {
		return brand;
	}

	public void setBrand(String brand) {
		this.brand = brand;
	}

	public String getColor() {
		return color;
	}

	public void setColor(String color) {
		this.color = color;
	}

	public int getWheelNum() {
		return wheelNum;
	}

	public void setWheelNum(int wheelNum) {
		if (wheelNum <= 0) {
			wheelNum = 2;
		}else {
			this.wheelNum = wheelNum;
		}
	}

	public int getChairNum() {
		return chairNum;
	}

	public void setChairNum(int chairNum) {
		if (chairNum <= 0) {
			chairNum=1;
		}else {
			this.chairNum = chairNum;
		}
	}

	// 方法:运行,描述内容为:这是一辆**颜色的,**牌的非机动车,有**个轮子,有**个座椅的非机动车。其中**的数据由属性提供
	public String work() {
		String str = "";
		str = str+"这是一辆"+this.getColor()+"颜色的,"+this.getBrand()+"牌的非机动车,有"+this.getWheelNum()+"个轮子,"+this.getChairNum()+"个座椅。";
		return str;
	}

}
public class Bicycle extends NonMotor {
    // 在构造方法中调用父类多参构造,完成属性赋值
	public Bicycle(String brand,String color) {
		super.setBrand(brand);
		super.setColor(color);
	}

	// 重写运行方法,描述内容为:这是一辆**颜色的,**牌的自行车。其中**的数据由属性提供
	public String work() {
		String str = "";
		str = str+"这是一辆"+this.getColor()+"颜色的,"+this.getBrand()+"牌的自行车。";
		return str;
	}
    
}
public class ElectricVehicle extends NonMotor {
    // 私有属性:电池品牌
	private String elsctricKind;
	
    // 公有的get***/set***方法完成属性封装
	public String getElsctricKind() {
		return elsctricKind;
	}
	public void setElsctricKind(String elsctricKind) {
		this.elsctricKind = elsctricKind;
	}

	// 重写运行方法,描述内容为:这是一辆使用**牌电池的电动车。其中**的数据由属性提供
	public String work() {
		String str = "";
		str = str+"这是一辆使用"+this.getElsctricKind()+"牌电池的电动车。";
		return str;
	}

}
public class Tricycle extends NonMotor {
    // 在无参构造中实现对轮子属性值进行修改
	public Tricycle() {
		super.setChairNum(3);
	}

	// 重写运行方法,描述内容为:三轮车是一款有**个轮子的非机动车。其中**的数据由属性提供
	public String work() {
		String str = "";
		str = str+"三轮车是一款有"+this.getChairNum()+"个轮子的非机动车。";
		return str;
	}
	
}
public class Test {
    public static void main(String[] args) {
    	//父类信息输出
    	NonMotor m1 = new NonMotor("天宇","红",4,2);
		System.out.println("父类信息测试:"+m1.work());
		
		//自行车类信息输出
		Bicycle m2 = new Bicycle("捷安特","黄");
		System.out.println("自行车类信息测试"+m2.work());
		
		//电动车类信息输出
		ElectricVehicle m3 = new ElectricVehicle();
		m3.setElsctricKind("飞鸽");
		System.out.println("电动车类信息测试:"+m3.work());

		//三轮车类信息输出
		Tricycle m4 = new Tricycle();
		System.out.println("三轮车类信息测试:"+m4.work());
		
	}
}


写回答

1回答

好帮手慕小尤

2019-11-25

同学你好,已实现练习,棒棒哒!不过有一个小建议,建议在Bicycle类中创建无参构造。因如果定义带参构造但未定义无参构造,则带参构造会覆盖掉默认的无参构造,当使用无参构造方法创建对象时,会报找不到无参构造方法错误。

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

0

0 学习 · 11489 问题

查看课程