Java继承下5_2代码,请老师检查。
来源:5-2 编程练习
不爽船长
2020-04-26 17:57:59
package pers.arkham.test; import pers.arkham.info.Car; import pers.arkham.info.HomeCar; import pers.arkham.info.Taxi; 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方法 taxi.ride(); taxi.use(); //输出重写toString后的taxi信息 System.out.println(taxi.toString()); System.out.println("=================================="); //实例化子类HomeCar对象,并传入属性值 HomeCar homeCar = new HomeCar("紫色", "孙二娘", 7); //调用display方法及它的重载方法 homeCar.display(); homeCar.display(5); } }
package pers.arkham.info; public class Car { //属性:车的颜色color、车主姓名userName public String color;//车的颜色 public String userName;//车主姓名 public Car(){ } //带参构造函数(参数为color和useName) public Car(String color,String userName) { this.color = color; this.userName = 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) @Override public boolean equals(Object obj) { if(obj == null) { return false; } Car car = (Car)obj; if( this.getColor().equals(car.getColor()) && this.getUserName().equals(car.getUserName()) ) { return true; }else { return false; } } }
package pers.arkham.info; public class Taxi extends Car{ //私有属性:所属公司( company) private String company;//所属公司 public Taxi(){ } //调用父类的构造方法,完成属性赋值 public Taxi(String company,String color,String userName) { super(color, userName);//父类构造 //setCompany(company); this.setCompany(company);//this 可以和 super一起用吗 } //通过封装实现对私有属性的get/set操作 public void setCompany(String company) { this.company = company; } public String getCompany() { return company; } //创建不允许重写的ride方法,描述为:**出租车是所属于***公司的。 public final void ride() { System.out.println(this.getUserName()+"的出租车是所属于"+this.getCompany()+"公司的"); } //重写父类use方法,描述为:出租车是提高市民生活质量的重要条件之一 @Override public void use() { System.out.println("出租车是提高市民生活质量的重要条件之一"); } //重写toString方法,输出的表现形式不同(输出color,userName) @Override public String toString() { return "taxi的信息是:"+ this.getUserName()+"拥有一辆"+this.getColor()+"出租车"; } }
package pers.arkham.info; 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); 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 display(int num) { System.out.println("家用汽车大多有"+this.getNum()+"个座位"); } }
老师想问个问题,我记得前几节课说到super和this不能一起用,但是我在 taxi类中用了super调用父类构造,也使用了this 并没有报错,请指教。
1回答
不是super和this这两个关键字不能同时,而是通过super和this调用的构造方法不能同时使用,即
super()和this()不能同时使用
请采纳!
相似问题