跪求老师帮忙看下这里应该用this还是super?

来源:2-21 编程练习

Kumal

2021-09-16 22:48:09

请教一下老师两个问题:

  1. 三轮车类中的无参构造的赋值语句,应该用  this.setWheel(3); 还是 super.setWheel(3); 呢?我两个都试了一下,运行结果好像没区别。这里是不是用this会比较规范一点?

  2. 求老师帮忙看看其他部分的代码有没有问题,谢谢老师!


相关截图:Test.java

https://img.mukewang.com/climg/614355ad092a6c8406550419.jpg

相关截图:NonMotor.java

https://img.mukewang.com/climg/6143570c093633dc10930906.jpg

https://img.mukewang.com/climg/61435699091626b312850595.jpg

相关截图:Bicycle.java

https://img.mukewang.com/climg/61435740093ce0ed08560398.jpg

相关截图:ElectricVehicle.java

https://img.mukewang.com/climg/6143575609c75cac08210686.jpg

相关截图:Tricycle.java

https://img.mukewang.com/climg/614357a209ae954e07900356.jpg


相关代码:Test.java

public class Test {
public static void main(String[] args) {

NonMotor nm = new NonMotor("天宇", "红", 4, 2);
System.out.println("父类信息测试:" + nm.work());

Bicycle bi = new Bicycle("捷安特", "黄");
System.out.println("自行车类信息测试:" + bi.work());

ElectricVehicle el = new ElectricVehicle("飞鸽");
System.out.println("电动车类信息测试:" + el.work());

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


相关代码:NonMotor.java

public class NonMotor {
// 私有属性:品牌、颜色、轮(默认2个)、座椅(默认 1个)
private String brand;
private String color;
private int wheel;
private int chair;

// 无参构造方法
public NonMotor() {
}

// 双参构造方法,完成对品牌和颜色的赋值
public NonMotor(String brand, String color) {
this.setBrand(brand);
this.setColor(color);
}

// 四参构造方法,分别对所有属性赋值
public NonMotor(String brand, String color, int wheel, int chair) {
this.setBrand(brand);
this.setColor(color);
this.setWheel(wheel);
this.setChair(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 getWheel() {
return wheel;
}

public void setWheel(int wheel) {
this.wheel = wheel;
}

public int getChair() {
return chair;
}

public void setChair(int chair) {
this.chair = chair;
}

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


相关代码:Bicycle.java

public class Bicycle extends NonMotor {
// 在构造方法中调用父类多参构造,完成属性赋值
public Bicycle() {

}

public Bicycle(String brand, String color) {
super(brand, color);
}
// 重写运行方法,描述内容为:这是一辆**颜色的,**牌的自行车。其中**的数据由属性提供
public String work() {
String str="这是一辆"+this.getColor()+"颜色的,"+this.getBrand()+"牌的自行车。";
return str;
}
}


相关代码:ElectricVehicle.java

public class ElectricVehicle extends NonMotor {
// 私有属性:电池品牌
private String batteryBrand;

// 无参构造方法和带参构造方法
public ElectricVehicle() {

}

public ElectricVehicle(String batteryBrand) {
this.setBatteryBrand(batteryBrand);;
}

// 公有的get***/set***方法完成属性封装
public String getBatteryBrand() {
return batteryBrand;
}

public void setBatteryBrand(String batteryBrand) {
this.batteryBrand = batteryBrand;
}

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


相关代码:Tricycle.java

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

// 重写运行方法,描述内容为:三轮车是一款有**个轮的非机动车。其中**的数据由属性提供
public String work() {
String str = "三轮车是一款有" + this.getWheel() + "个轮的非机动车。";
return str;
}
}


写回答

1回答

好帮手慕阿园

2021-09-17

同学你好

1、这里使用this和super都是可以的,表示都是调用父类的set方法,如果子类中有相同的方法,使用this调用的是自己的方法,super调用的是父类的,在该案例中使用this和super都是可以的

2、代码整体完成的不错,但还有个地方可以优化一下

代码中要求轮子默认2个,座椅默认一个,代码中未编写,建议添加

https://img.mukewang.com/climg/6144038c091cf55703920082.jpg

参考如下

https://img.mukewang.com/climg/613dd30c09fb77d603190085.jpg

祝学习愉快~
0
humal
hp>好的,谢谢阿园老师!

h021-09-17
共1条回复

0 学习 · 9886 问题

查看课程