作业要求:
1)定义接口--定义查车速的方法
2)实现接口--根据车的类型-输出不同的车速
3)定义抽象类、抽象方法 --定义一个查车运行情况
4)继承抽象类、重载抽象方法--根据不同的车得到不同的结果
开始做时都不明白自己写的是什么,不断百度。
1)定义接口
public interface VehicleInterface {
public void getVehicleSpeed();
}
2)实现接口
//第一次实现
public class VehicleInterfaceImp implements VehicleInterface {
@Override
public String getVehicleSpeed(String type) {
if (Car.AUTOMOBILE.equals(type)) {
return Automobile.SPEED;
}
return null;
}
}
//第二次实现
public class VehicleInterfaceNewImp implements VehicleInterface {
@Override
public String getVehicleSpeed(String type) {
String speed = "60码";
if (Car.AUTOMOBILE.equals(type)) {
return speed;
}
return null;
}
}
````
3)定义抽象类
````
public abstract class AbstractCar {
public AbstractCar(){
System.out.println(this.getClass()+ "所有的车都可以跑");
}
public void stop(){
System.out.println(this.getClass()+ "所有的车都可以停");
}
public abstract void run();
}
````
4)继承抽象类、重载抽象方法
````
//第一次继承
public class Automobile extends AbstractCar {
public final static String SPEED = "六十码";
public Automobile() {
System.out.println(this.getClass() + "汽车可以跑的很快");
}
public void run() {
System.out.println("汽车的速度是:" + SPEED);
}
}
//第二次继承
public class Bridgecar extends AbstractCar {
public final static String SPEED = "五十五码";
public void run(){
System.out.println("小轿车的速度是:" + SPEED );
}
}
````
测试
```
public class VehicleIterfaceTest {
public static void main(String[] args) {
System.out.println("我是接口----------------------------开始");
VehicleInterface veimp1 = new VehicleInterfaceImp();
VehicleInterface veimp2 = new VehicleInterfaceNewImp();
System.out.println("汽车的速度是:" + veimp1.getVehicleSpeed("automobile"));
System.out.println("汽车的速度是:" + veimp2.getVehicleSpeed("automobile"));
System.out.println("我是接口----------------------------结束");
System.out.println();
System.out.println("我是抽象类--------------------------开始");
Automobile auto = new Automobile();
auto.stop();
auto.run();
Bridgecar bcar = new Bridgecar();
bcar.run();
System.out.println("我是抽象类--------------------------结束");
}
}
```
测试结果
````
我是接口----------------------------开始
汽车的速度是:六十码
汽车的速度是:60 yards
我是接口----------------------------结束
我是抽象类--------------------------开始
class pers.qingqian.study.entity.Automobile所有的车都可以跑
class pers.qingqian.study.entity.Automobile汽车可以跑的很快
class pers.qingqian.study.entity.Automobile所有的车都可以停止
汽车的速度是:六十码
class pers.qingqian.study.entity.Bridgecar所有的车都可以跑
小轿车的速度是:五十五码
我是抽象类--------------------------结束
````
改动第三版
````
//定义接口
public interface VehicleInterface {
public void getSpeed();
}
//定义抽象类、抽象方法、实现接口
public abstract class AbstractCar implements VehicleInterface {
public void getSpeed() {
this.getStart();
this.printSpeed();
}
public abstract void getStart();
public abstract int speed();
// 输出速度
public void printSpeed() {
System.out.println("我的启动速度是:" + this.speed());
}
}
//汽车
public class Automobile extends AbstractCar {
@Override
public void getStart() {
System.out.println("我是汽车....");
}
@Override
public void printSpeed() {
System.out.println("我的启动速度是:" + this.speed());
}
public int speed() {
return 100;
}
}
//小桥车
public class Bridgecar extends AbstractCar {
@Override
public void getStart() {
System.out.println("我是小桥车...");
}
@Override
public void printSpeed() {
System.out.println("我的启动速度是:" + this.speed());
}
public int speed() {
return 120;
}
}
//测试类
public class VehicleIterfaceTest {
public static void main(String[] args) {
VehicleInterface veimp1 = new Automobile();
VehicleInterface veimp2 = new Bridgecar();
veimp1.getSpeed();
veimp2.getSpeed();
}
}
//测试结果
我是汽车....
我的启动速度是:100
我是小桥车...
我的启动速度是:120
````
在BF老师指导下,改写成简洁的模样,看到了点架构的影子,有写代码的感觉啦。