/*
* 设定
* 出租车类:属性包括:车型,车牌,所属出租公司;方法包括:启动,停止(输出相应对顾客的提醒问候语)
* 家用轿车类:属性包括:车型,车牌,车主姓名;方法包括:启动,停止
* 要求
* 分析出租车和家用轿车的公共成员,提取出父类—汽车类
* 利用继承机制,实现出租车类和家用轿车类
* 编写测试类,分别测试汽车类,出租车类和家用轿车类对象的相关方法
* 定义名为car的包存放汽车类,出租车类,家用轿车类和测试类
*/
public class Test {
public static void main(String[] args) {
Taxi taxi = new Taxi("商务车", "京A-66666", "北京科技有限公司");
taxi.start();
taxi.stop();
System.out.println("————————————————————————————————");
OwnCar ownCar = new OwnCar("轿车", "京A-88888");
ownCar.setName("小王");
ownCar.start();
ownCar.stop();
}
}
class Car {
private String type;
private String carNumber;
public void start() {
System.out.println("我是" + this.type + ",我启动了");
}
public void stop() {
System.out.println("我是" + this.type + ",我停止了");
}
public Car(String type, String carNumber) {
this.type = type;
this.carNumber = carNumber;
}
public Car() {
}
public String getType() {
return type;
}
public void setType(String type) {
this.type = type;
}
public String getCarNumber() {
return carNumber;
}
public void setCarNumber(String carNumber) {
this.carNumber = carNumber;
}
}
class Taxi extends Car {
private String company;
public Taxi(String type, String carNumber, String company) {
super(type, carNumber);
this.company = company;
}
public Taxi() {
}
public String getCompany() {
return company;
}
public void setCompany(String company) {
this.company = company;
}
@Override
public void start() {
System.out.println("您好,我是您叫的" + super.getType() + "车牌号为:" + super.getCarNumber() + ",上车后请系好安全带,我们准备按导航出发");
}
@Override
public void stop() {
System.out.println("尊敬的顾客您好,我们已到达目的地,请右侧下车,下车的时候注意后方车辆");
}
}
class OwnCar extends Car {
private String name;
public OwnCar(String type, String carNumber) {
super(type, carNumber);
}
public OwnCar() {
}
public String getName() {
return name;
}
public void setName(String name) {
this.name = name;
}
public OwnCar(String type, String carNumber, String name) {
super(type, carNumber);
this.name = name;
}
}
/*
* 工具类名称MathUtil
* 方法1: abs(int num) 求绝对值
* 方法2: floor(double num) 向下取整,无论是正数还是负数,都取最小的值
* 方法3: ceil(double num) 向上取整,无论是正数还是负数,都取最大的值
* 方法4: round(double num) 四舍五入
*/
public class MathUtil {
private MathUtil() {}
public static int abs(int num) {
return num > 0 ? num : num * -1;
}
public static int floor(double num) {
if (num >= 0) {
return (int) num;
}
if ((int)(num * 10 % 10) == 0) {
return (int) num;
}
return (int) (num - 1);
}
public static int ceil(double num) {
return (int) (num > 0 ? num + 1 : num);
}
public static int round(double num) {
return (int) (num > 0 ? num + 0.5 : num - 0.5);
}
}