请老师帮忙看一下是否有需要改进的地方
1.Test.java:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 | public class Test { public static void main(String[] args) { NonMotor nm = new NonMotor( "天宇" , "红" , 4 , 2 ); Bicycle b = new Bicycle( "捷安特" , "黄" ); ElectricVehicle ev = new ElectricVehicle( "飞鸽" ); Tricycle t = new Tricycle(); System.out.print( "父类信息测试:" +nm.work()); System.out.print( "\n自行车类信息测试:" +b.work()); System.out.print( "\n电动车类信息测试:" +ev.work()); System.out.print( "\n三轮车类信息测试:" +t.work()); } } |
2.NonMotor.java
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 | public class NonMotor { // 私有属性:品牌、颜色、轮子(默认2个)、座椅(默认 1个) private String brand; private String color; private int numOfWheels = 2 ; private int numOfSeats = 1 ; // 无参构造方法 public NonMotor(){ } // 双参构造方法,完成对品牌和颜色的赋值 public NonMotor(String brand,String Color){ setBrand(brand); setColor(color); } // 四参构造方法,分别对所有属性赋值 public NonMotor(String brand,String Color, int numOfWheels, int numOfSeats){ setBrand(brand); setColor(color); setNumOfWheels(numOfWheels); setNumOfSeats(numOfSeats); } // 公有的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 getNumOfWheels(){ return numOfWheels; } public void setNumOfWheels( int numOfWheels){ this .numOfWheels = numOfWheels; } public int getNumOfSeats(){ return numOfSeats; } public void setNumOfSeats( int numOfSeats){ this .numOfSeats = numOfSeats; } // 方法:运行,描述内容为:这是一辆**颜色的,**牌的非机动车,有**个轮子,有**个座椅的非机动车。其中**的数据由属性提供 public String work() { String str = "这是一辆" +color+ "颜色的," +brand+ "牌的非机动车,有" +numOfWheels+ "个轮子,有" +numOfSeats+ "个座椅" ; return str; } } |
3.Bicycle.java
这里有个问题,带参构造方法如果这样写是不是没有任何区别?
1 2 3 | public Bicycle(String brand,String color){ setBrand(brand); setColor(color); |
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 | public class Bicycle extends NonMotor { // 在构造方法中调用父类多参构造,完成属性赋值 public Bicycle(){ } public Bicycle(String brand,String color){ super (brand,color); } // 重写运行方法,描述内容为:这是一辆**颜色的,**牌的自行车。其中**的数据由属性提供 public String work() { String str = "这是一辆" +getColor()+ "颜色的," +getBrand()+ "牌的自行车" ; return str; } } |
4.ElectricVehicle.java
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 | public class ElectricVehicle extends NonMotor { // 私有属性:电池品牌 private String brandOfBattery; // 公有的get***/set***方法完成属性封装 public ElectricVehicle(){ } public ElectricVehicle(String brandOfBattery){ setBrandOfBattery(brandOfBattery); } public String getBrandOfBattery(){ return brandOfBattery; } public void setBrandOfBattery(String brandOfBattery){ this .brandOfBattery = brandOfBattery; } // 重写运行方法,描述内容为:这是一辆使用**牌电池的电动车。其中**的数据由属性提供 public String work() { String str = "这是一辆使用" +getBrandOfBattery()+ "牌电池的电动车" ; return str; } } |
5.Tricycle.java
1 2 3 4 5 6 7 8 9 10 11 | public class Tricycle extends NonMotor { // 在无参构造中实现对轮子属性值进行修改 public Tricycle(){ this .setNumOfWheels( 3 ); } // 重写运行方法,描述内容为:三轮车是一款有**个轮子的非机动车。其中**的数据由属性提供 public String work() { String str = "三轮车是一款有" +getNumOfWheels()+ "个轮子的非机动车" ; return str; } } |
代码比较长,辛苦老师了!
8
收起
正在回答 回答被采纳积分+1
1回答
好帮手慕小黑
2022-08-23 10:31:51
同学你好,
1.同学的运行效果有误,同学的运行效果如下图所示:
原因是在NonMotor类的有参构造方法中,没有将名为Color的参数赋值给color属性,建议同学在有参构造方法中调用setColor方法时,将Color参数传入setColor方法中,修改后代码如下图所示:
2.当带参构造方法书写为:
1 2 3 4 | public Bicycle(String brand,String color){ setBrand(brand); setColor(color); } |
调用的是父类的set方法,是可以为属性进行赋值的,但不符合编程练习的要求:“在构造方法中调用父类多参构造,完成属性赋值”,建议同学按照编程练习的要求完成练习。
祝学习愉快!
恭喜解决一个难题,获得1积分~
来为老师/同学的回答评分吧