练习打卡~请老师检查~

来源:4-4 编程练习

慕设计7678942

2020-06-09 14:20:34

package practice4_4;


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("蓝色","张小泉");

taxi.setCompany("长生公司");

//调用ride和use方法

taxi.ride();

taxi.use();


//输出重写toString后的taxi信息

System.out.println(taxi.toString());


System.out.println("==================================");

//实例化子类HomeCar对象,并传入属性值

HomeCar home=new HomeCar("紫色","孙二娘",7);


//调用display方法及它的重载方法

home.display();

home.dislay(5);

}

}

====================================

package practice4_4;


public class Car {

    //属性:车的颜色color、车主姓名userName

private String color;

private String userName;


public Car(){

}

//带参构造函数(参数为color和userName)

public Car(String color,String userName) {

this.setColor(color);

this.setUserName(userName);

}

    //通过封装实现对私有属性的get/set操作

public String getColor() {

return color;

}


public void setColor(String color) {

this.color = color;

}


public String getUserName() {

return userName;

}


public void setUserName(String userName) {

this.userName = userName;

}


    //创建无参无返回值得方法use(描述内容为:我是机动车!)

public void use() {

System.out.println("我是机动车!");

}



//重写equals方法,比较两个对象是否相等(比较color,userName)

public boolean equals(Object obj) {

if(obj==null) 

return false;

Car temp=(Car)obj;

if(this.getColor().equals(temp.getColor())&& this.getUserName().equals(temp.getUserName()))

return true;

else

return false;

}







}


===============================

package practice4_4;


public class Taxi extends Car{

    //私有属性:所属公司( company)

private String company;


public Taxi(){

}

//调用父类的构造方法,完成属性赋值

    public Taxi(String color,String userName) {

    super(color,userName);

    }

    //通过封装实现对私有属性的get/set操作

    public String getCompany() {

return company;

}

public void setCompany(String company) {

this.company = company;

}


//创建不允许重写的ride方法,描述为:**出租车是所属于***公司的。

public final void ride() {

System.out.println(this.getUserName()+"出租车是所属于"+this.getCompany()+"公司的。");

}


//重写父类use方法,描述为:出租车是提高市民生活质量的重要条件之一

public void use() {

System.out.println("出租车是提高市民生活质量的重要条件之一");

}

//重写toString方法,输出的表现形式不同(输出color,userName)

public String toString() {

return "Taxi的信息是: "+this.getUserName()+"拥有一辆"+this.getColor()+"的出租车";

}





}

======================================

package practice4_4;


public final class HomeCar extends Car{

    //私有属性:载客数(num)

private int num;


    

public HomeCar(){

}

//带参构造方法为所有属性赋值

public HomeCar(String color,String userName,int num) {

this.setColor(color);

this.setUserName(userName);

this.setNum(num);

}


   //通过封装实现对私有属性的get/set操作

public int getNum() {

return num;

}

public void setNum(int num) {

this.num = num;

}

//创建无参无返回值的display方法,表现为:**拥有的**颜色的私家车,有**座位

public void display() {

System.out.println(this.getUserName()+"拥有的"+this.getColor()+"颜色的私家车,有"+this.getNum()+"座位");

}



//重载display方法(带参数num),描述为:家用汽车大多有**个座位

public void dislay(int num) {

System.out.println("家用汽车大多有"+num+"个座位");

}



}


写回答

1回答

好帮手慕阿园

2020-06-09

同学你好,同学的代码有以下几个地方需要优化一下

1,父类:题目中要求结合注解完成equals方法的重写,同学没有使用注解,修改后如下

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

 2,子类taxi:重写use方法和toString方法,也是需要结合注解完成

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

 子类taxi:调用父类的构造方法完成赋值,应该加上子类的属性,修改如下

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

3, 子类HomeCar:题目中要求重载display方法,同学重载后的方法名少写了个p,如下

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

 4,测试类:实例化子类Taxi对象时,赋值可以通过全参构造为属性赋值

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

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


0

0 学习 · 16556 问题

查看课程