2-23编程练习的小问题
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()+"个座椅的非机动车。其中"+this.getBrand()+"的数据由属性提供";
return str;
}
}
public class Bicycle extends NonMotor {
// 在构造方法中调用父类多参构造,完成属性赋值
public Bicycle(String brand,String color){
super(brand,color);
this.setBrand(brand);
this.setColor(color);
}
// 重写运行方法,描述内容为:这是一辆**颜色的,**牌的自行车。其中**的数据由属性提供
public String work() {
String str="这是一辆"+this.getColor()+"颜色的,"+this.getBrand()+"牌的自行车。其中"+this.getBrand()+"的数据由属性提供";
return str;
}
}
public class ElectricVehicle extends NonMotor {
// 私有属性:电池品牌
private String battery;
// 创建构造方法,完成属性赋值
public ElectricVehicle(String battery){
this.setBattery(battery);
}
// 公有的get***/set***方法完成属性封装
public void setBattery(String battery){
this.battery=battery;
}
public String getBattery(){
return this.battery;
}
// 重写运行方法,描述内容为:这是一辆使用**牌电池的电动车。其中**的数据由属性提供
public String work() {
String str="这是一辆使用"+this.getBattery()+"牌电池的电动车。其中"+this.getBattery()+"的数据由属性提供";
return str;
}
}
public class Tricycle extends NonMotor {
// 在无参构造中实现对轮子属性值进行修改
public Tricycle(int wheel){
this.setWheel(wheel);
}
// 重写运行方法,描述内容为:三轮车是一款有**个轮子的非机动车。其中**的数据由属性提供
public String work(){
String str="三轮车是一辆有"+this.getWheel()+"个轮子的非机动车。其中"+getBrand()+"的数据由属性提供";
return str;
}
}
public class Test {
public static void main(String[] args) {
NonMotor one=new NonMotor("天宇","红",4,2);
System.out.print("父类信息测试:"+one.work());
System.out.println();
Bicycle two=new Bicycle("捷安特","黄");
System.out.print("自行车类信息测试:"+two.work());
System.out.println();
ElectricVehicle three=new ElectricVehicle("飞鸽");
System.out.print("电动车类信息测试:"+three.work());
System.out.println();
Tricycle four=new Tricycle(3);
System.out.print("三轮车类信息测试:"+four.work());
}
}
老师,继承的2-23编程写完了,运行正常。 但是,有点小问题: 1、在程序参考运行效果图里,没有“其中**的数据由属性提供”,但是任务要求要有,这就没有参考标准了, 老师可以看下我写的符不符合规范。 2、打印三轮车信息:“三轮车类信息测试:三轮车是一辆有3个轮子的非机动车。其中null的数据由属性提供” ,我不懂,明明在父类里,父类对象one不是传了品牌的值:天宇。既然三轮车没有重新为brand赋值,那就 应该默认是父类的天宇牌啊,怎么回事null?
正在回答
同学你好,关于同学的问题回答如下:
1、“其中**的数据是由属性提供”这是一句提示语句,表示前面的“**”的值是由属性提供的,而“其中**的数据是由属性提供”这句提示语句本身是不需要输出的。所以在题目给出的效果图中没有这句输出语句。
2、是的,子类继承父类。只是继承了父类的特征,父类创建的对象和子类没有关系。
如果我的回答解决了你的疑惑,请采纳。祝:学习愉快~
老师,比方说,父类是这样的:
public class Car{
private String color;
private double price;
public Car(String color,double price){
this.color=color;
this.prive=price;
}
public void show(){
System.out.println("此车颜色是:"+this.color+",价格是:"+this.price);
}
}
子类是:
public class Truck extends Car{
public Truck(String color,double price){
super(color,price);
}
}
测试类:
public class Test{
public static void main(String[] args){
Truck one = new Truck("鱼肚白",88880);
}
one.show();
}
我的问题是,one的颜色价格是否通过super(color,price)传给了父类构造方法?
打印的结果是null,还是赋值后的结果。其实,我就弄不清super(color,price),到底接收到子类的实例化赋值没有?
你好!
关于第一个问题:其中的数据由属性提供,这是一个提示信息,可以不放到输出中
关于第二个问题:父类创建对象后的值是不会传给子类的,如果子类也需要brand值,需要自己进行设置。继承是子类继承父类的特征,跟对象是没有关系的。设置继承的目的是为了减少冗余的代码,父类有的内容,子类继承父类后就不用再写了,继承后的内容在子类虽然没有写出来但都是存在的,所以子类本身也具有这些属性和方法,因此,子类创建对象的时候和父类对象是没有关系的。
在子类的构造方法中,可以通过super关键字为从父类继承的属性赋值。构造方法还需要有一个brand参数。
如果我的回答解决了你的疑惑,请采纳!祝学习愉快!
- 参与学习 人
- 提交作业 3802 份
- 解答问题 11489 个
本阶段带你迈入Java世界,学习Java必备基础知识,基础语法、面向对象思想以及常用工具类的使用。
了解课程
恭喜解决一个难题,获得1积分~
来为老师/同学的回答评分吧
0 星