老师看一下,有问题吗

来源:5-2 编程练习

长情意在夜雨香

2019-08-05 11:38:10

public class Test {
    public static void main(String[] args){ 
		//实例化父类对象,并传入两组相同的属性值
        Car car1 = new Car("蓝色", "张小胖");
        Car car2 = new Car("蓝色", "张小胖");

		//调用父类use方法
        car1.use();

		//通过重写equals方法,比较两个对象是否相等
		System.out.println("car1和car2的引用比较:"+car1.equals(car2));


		System.out.println("==================================");
        //实例化子类Taxi对象,并传入属性值
		Taxi taxi = new Taxi("蓝色", "张小泉", "长生");

		//调用ride和use方法
		System.out.println(taxi.ride());

		//输出重写toString后的taxi信息
		System.out.println(taxi);

		System.out.println("==================================");
		//实例化子类HomeCar对象,并传入属性值
		HomeCar hc = new HomeCar("紫色", "孙二娘", 7);

		//调用display方法及它的重载方法
		hc.display();
		hc.display(5);


	}
}
public class Car {
    //属性:车的颜色color、车主姓名userName
	private String color;//颜色
	private String userName;//车主姓名

	public Car(){
		
	}
	//带参构造函数(参数为color和useName)
	public Car(String color, String userName){
	    setColor(color);
	    setUserName(userName);
	}

    //通过封装实现对私有属性的get/set操作
    public void setColor(String color){
        this.color = color;
    }
    
    public String getColor(){
        return color;
    }
    
    public void setUserName(String userName){
        this.userName = userName;
    }
    
    public String getUserName(){
        return userName;
    }

	
    //创建无参无返回值得方法use(描述内容为:我是机动车!)
	public void use(){
	    System.out.println("我是机动车!");
	}

	//重写equals方法,比较两个对象是否相等(比较color,userName)
	public boolean equals(Object one){
	    Car temp = (Car) one;
	    if(temp == null)
	        return false;
	    if(getColor().equals(temp.getColor()) && getUserName().equals(temp.getUserName()))
	        return true;
	    else
	        return false;
	}
	
}
public class Taxi extends Car{
    //私有属性:所属公司( company)
	private String company;

	public Taxi(){
		
	}
	//调用父类的构造方法,完成属性赋值
    public Taxi(String color, String userName, String company){
        super(color, userName);
        setCompany(company);
    }
	
    //通过封装实现对私有属性的get/set操作
    public void setCompany(String company){
        this.company = company;
    }
    
    public String getCompany(){
        return company;
    }

	//创建不允许重写的ride方法,描述为:**出租车是所属于***公司的。
	
    public final String ride(){
        String str =getUserName()+"的出租车是所属于"+getCompany()+"公司的";
        return str;
    }



	//重写父类use方法,描述为:出租车是提高市民生活质量的重要条件之一
	public void use(){
	    System.out.println("出租车是提高市民生活质量的重要条件");
	}



	//重写toString方法,输出的表现形式不同(输出color,userName)
	
    public String toString(){
        String str = "Taxi的信息是:"+getUserName()+"拥有一辆"+getColor()+"的出租车";
        return str;
    }
}
public final class HomeCar extends Car{
    //私有属性:载客数(num)
    private int num;

    
	public HomeCar(){
		
	}
	//带参构造方法为所有属性赋值
	public HomeCar(String color, String userName, int num){
	    setColor(color);
	    setUserName(userName);
	    setNum(num);
	}

   //通过封装实现对私有属性的get/set操作
   public void setNum(int num){
       this.num = num;
   }
   
   public int getNum(){
       return num;
   }
   

	//创建无参无返回值的display方法,表现为:**拥有的**颜色的私家车,有**座位
	public void display(){
	    System.out.println(getUserName()+"拥有的"+getColor()+"颜色的私家车,有"+getNum()+"座位");
	}


	//重载display方法(带参数num),描述为:家用汽车大多有**个座位
	public void display(int num){
	    System.out.println("家用汽车大多有"+getNum()+"个座位");
	}


}


写回答

1回答

好帮手慕小班

2019-08-05

        同学你好,1、复制运行贴出代码,有如下的运行效果:

http://img.mukewang.com/climg/5d47ca0200014f5003820254.jpg

上图圈中位置与题目要求不符,原因是在HomeCar类中有参的display方法中,并没有输出传入的参数,而是输出了原本的属性的值,在修改建议如下:

http://img.mukewang.com/climg/5d47ca970001a16809090281.jpg

        2、运行代码,除了上述的一个小问题,其余代码运行没有问题,也很规范,很棒呐,继续加油!

         如果我的回答解决了你的疑惑,请采纳!祝学习愉快!

0

0 学习 · 11489 问题

查看课程