请老师帮忙看一下是否有需要改进的地方

请老师帮忙看一下是否有需要改进的地方

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;
    }
}

代码比较长,辛苦老师了!

正在回答 回答被采纳积分+1

登陆购买课程后可参与讨论,去登陆

1回答
好帮手慕小黑 2022-08-23 10:31:51

同学你好,

1.同学的运行效果有误,同学的运行效果如下图所示:

https://img1.sycdn.imooc.com//climg/63043bcb095aa7fb05540116.jpg

原因是在NonMotor类的有参构造方法中,没有将名为Color的参数赋值给color属性,建议同学在有参构造方法中调用setColor方法时,将Color参数传入setColor方法中,修改后代码如下图所示:

https://img1.sycdn.imooc.com//climg/63043bed09a224df08700279.jpg

2.当带参构造方法书写为:

1
2
3
4
public Bicycle(String brand,String color){
        setBrand(brand);
        setColor(color);
}

调用的是父类的set方法,是可以为属性进行赋值的,但不符合编程练习的要求:“在构造方法中调用父类多参构造,完成属性赋值”,建议同学按照编程练习的要求完成练习。

祝学习愉快!

  • 提问者 Masato1990 #1
    谢谢老师,那个Color是敲错了。。。应该是color
    2022-08-23 10:47:00
问题已解决,确定采纳
还有疑问,暂不采纳

恭喜解决一个难题,获得1积分~

来为老师/同学的回答评分吧

0 星
请稍等 ...
微信客服

购课补贴
联系客服咨询优惠详情

帮助反馈 APP下载

慕课网APP
您的移动学习伙伴

公众号

扫描二维码
关注慕课网微信公众号

在线咨询

领取优惠

免费试听

领取大纲

扫描二维码,添加
你的专属老师
插入代码