2-18的编程练习,总觉得有哪不妥。老湿嫩帮看看有什么要改进的么?

2-18的编程练习,总觉得有哪不妥。老湿嫩帮看看有什么要改进的么?

package perk.tong.imooc.bick;

/**
 * 非机动车类,作为父类 属性:品牌、颜色、轮子(默认2个)、座椅(默认 1个) 方法: 1.编写无参构造方法、双参构造方法和四参构造方法,其中,
 * 在双参构造方法中,完成对品牌和颜色的赋值; 在四参构造方法中,完成对所有属性的赋值
 * 2.编写运行的方法,描述内容为:这是一辆**颜色的,**牌的非机动车,有**个轮子,有**个座椅的非机动车。 其中**的数据由属性提供
 *
 * @author gelid
 *
 */
public class Vehicle {
    private String brand;// 品牌
    private String colour;// 颜色
    private int wheel;// 轮子个数(默认2个)
    private int seat;// 座椅个数(默认一个)

    // 作为父类要有无参构造方法
    public Vehicle() {

    }

    // 创建2个参数的构造方法,品牌、颜色
    public Vehicle(String brand, String colour) {
        this.setBrand(brand);
        this.setColour(colour);
    }

    // 创建4个参数的构造方法,品牌、颜色、车轮数、座位数
    public Vehicle(String brand, String colour, int wheel, int seat) {
        this.setBrand(brand);
        this.setColour(colour);
        this.setWheel(wheel);
        this.setSeat(seat);
    }

    public String getBrand() {
        return brand;
    }

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

    public String getColour() {
        return colour;
    }

    public void setColour(String colour) {
        this.colour = colour;
    }

    public int getWheel() {
        return wheel;
    }

    public void setWheel(int wheel) {
        // 设置默认车轮数2个
        if (wheel < 2)
            this.wheel = 2;
        else
            this.wheel = wheel;
    }

    public int getSeat() {
        return seat;
    }

    public void setSeat(int seat) {
        // 设置默认座位1个
        if (seat < 1)
            this.seat = 1;
        else
            this.seat = seat;
    }

    public String info() {
        String str = "父类信息测试:这是一辆" + this.getColour() + "色的," + this.getBrand()
                + "牌的非机动车,有" + this.getWheel() + "个轮子,有" + this.getSeat()
                + "个座椅。";
        return str;
    }
}

正在回答

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

6回答

Vehicle类中,轮子个数默认为2个,座椅默认为1个,也就是在定义变量的时候直接赋值就可以了,不用在set方法里进行设置。

如:private int wheel=2;// 轮子个数(默认2个)

其他内容没问题。祝学习愉快!

  • gank 提问者 #1
    我总觉得构造方法继承调用这块有问题的。谢谢老湿!
    2017-06-30 07:39:10
我本人很浪 2017-09-05 00:02:03
//Test类:
public class Test {
    public static void main(String[] args) {
		System.out.print("父类信息测试:");
        NonMotor mm = new NonMotor("天宇","红",4,2);
        System.out.println(mm.work());
        
		System.out.print("自行车类信息测试:");
		Bicycle bc = new Bicycle("捷安特","黄");
		System.out.println(bc.work());

		System.out.print("电动车类信息测试:");
        ElectricVehicle ev = new ElectricVehicle("飞鸽");
        System.out.println(ev.work());
        
		System.out.print("三轮车类信息测试:");
		Tricycle tc = new Tricycle();
		System.out.println(tc.work());
		
	}
}

//NonMotor类:
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 this.brand;
    }
    
    public void setBrand(String brand){
        this.brand = brand;
    }
    
    public String getColor(){
        return this.color;
    }
    
    public void setColor(String color){
        this.color = color;
    }
    
    public int getWheel(){
        return this.wheel;
    }
    
    public void setWheel(int wheel){
        this.wheel = wheel;
    }
    
    public int getChair(){
        return this.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类:
public class Bicycle extends NonMotor {
    // 在构造方法中调用父类多参构造,完成属性赋值
    private String brand;
	private String color;
	
	// 无参构造方法
	public Bicycle(){
	    
	}
	
	public Bicycle(String brand,String color){
	    super(brand,color);
	}
	
	public String getBrand(){
        return this.brand;
    }
    
    public void setBrand(String brand){
        this.brand = brand;
    }
    
    public String getColor(){
        return this.color;
    }
    
    public void setColor(String color){
        this.color = color;
    }
	
	// 重写运行方法,描述内容为:这是一辆**颜色的,**牌的自行车。其中**的数据由属性提供
    public String work() {
	    String str = "这是一辆"+this.getColor()+"颜色的,"+this.getBrand()+"牌的自行车。";
		return str;
	}
    
}

//ElectricVehicle类:
public class ElectricVehicle extends NonMotor {
    // 私有属性:电池品牌
	private String batteryBrand;
	
	// 无参构造方法
	public ElectricVehicle(){
	    
	}
	
	public ElectricVehicle(String batteryBrand){
	    this.setBatteryBrand(batteryBrand);
	}
	
    // 公有的get***/set***方法完成属性封装
    public String getBatteryBrand(){
        return this.batteryBrand;
    }
    
    public void setBatteryBrand(String batteryBrand){
        this.batteryBrand = batteryBrand;
    }
    
	// 重写运行方法,描述内容为:这是一辆使用**牌电池的电动车。其中**的数据由属性提供
    public String work() {
	    String str = "这是一辆使用"+this.getBatteryBrand()+"牌电池的电动车。";
		return str;
	}
}

//Tricycle类:
public class Tricycle extends NonMotor {
    // 在无参构造中实现对轮子属性值进行修改
    private int wheel;
    
    public Tricycle(){
        super.setWheel(3);
    }
    
    public int getWheel(){
        return this.wheel;
    }
    
    public void setWheel(int wheel){
        this.wheel = wheel;
    }
	// 重写运行方法,描述内容为:三轮车是一款有**个轮子的非机动车。其中**的数据由属性提供
    public String work() {
	    String str = "三轮车是一款有"+super.getWheel()+"个轮子的非机动车。";
		return str;
	}
}


提问者 gank 2017-06-29 12:46:18

package taskOne;

import perk.tong.imooc.bick.Bicycle;
import perk.tong.imooc.bick.Electrombile;
import perk.tong.imooc.bick.Tricycle;
import perk.tong.imooc.bick.Vehicle;

/**
 * 非机动车测试类
 * @author gelid
 *
 */
public class VehicleTest {

    public static void main(String[] args) {
        //父类信息测试
        Vehicle ve=new Vehicle("天宇","红色",4,2);
        System.out.println(ve.info());
        Bicycle by=new Bicycle("捷安特","黄色");
        System.out.println(by.info());
        Electrombile el=new Electrombile("飞鹤");
        System.out.println(el.info());
        Tricycle tr=new Tricycle();
        System.out.println(tr.info());

    }

}

提问者 gank 2017-06-29 12:45:50

package perk.tong.imooc.bick;

/**
 * 三轮车类
 * @author gelid
 *
 */
public class Tricycle extends Vehicle {
    public Tricycle(){
         super.setWheel(3);
    }
   

    public String info(){
        String str="三轮车信息测试:三轮车是一款有"+this.getWheel()+"个轮子的非机动车。";
     return str;
    }
}

提问者 gank 2017-06-29 12:45:33

package perk.tong.imooc.bick;

/**
 * 电动车类
 * @author gelid
 *
 */
public class Electrombile extends Vehicle {
    private String batteryBrand;
    //构造方法
    public Electrombile(){
        
    }
    public Electrombile(String batteryBrand){
        this.setBatteryBrand(batteryBrand);
    }
    
    
    public String getBatteryBrand(){
        return batteryBrand;
    }
    public void setBatteryBrand(String batteryBrand){
        this.batteryBrand=batteryBrand;
    }
    
    public String info(){
        String str="电动车信息测试:这是一台用"+this.getBatteryBrand()+"牌电池的电动车。";
        return str;
    }

}

提问者 gank 2017-06-29 12:45:11

package perk.tong.imooc.bick;

/**
 * 自行车类
 * @author gelid
 *
 */
public class Bicycle extends Vehicle{
    public Bicycle(){
        
    }
public Bicycle(String brand, String colour){
    super(brand,colour);
    
    }
    
    public String info(){
        String str="自行车信息测试:这是一辆"+this.getColour()+"的,"+this.getBrand()+"牌自行车。";
        return str;
    }
    
}

问题已解决,确定采纳
还有疑问,暂不采纳

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

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

0 星
请稍等 ...
意见反馈 帮助中心 APP下载
官方微信

在线咨询

领取优惠

免费试听

领取大纲

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