Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/github/3.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Java 将接口转换为不同类型_Java - Fatal编程技术网

Java 将接口转换为不同类型

Java 将接口转换为不同类型,java,Java,如何将接口转换为其他类型 假设我有一个“Cars”类型的界面 另一种是“卡车”。 我想将此接口转换为“车辆”类型 我该如何解决这个问题呢?您可以: 将当前实施汽车或卡车的所有类别改为现在实施车辆 使Car和Truck扩展新界面Vehicle 例如,如果您目前有: class A implements Car { public void carDrive(){ ... } } class B implements Truck { public void truckDrive(){

如何将接口转换为其他类型

假设我有一个“Cars”类型的界面 另一种是“卡车”。 我想将此接口转换为“车辆”类型

我该如何解决这个问题呢?

您可以:

  • 将当前实施
    汽车
    卡车
    的所有类别改为现在实施
    车辆

  • 使
    Car
    Truck
    扩展新界面
    Vehicle

  • 例如,如果您目前有:

    class A implements Car {
        public void carDrive(){ ... }
    }
    
    class B implements Truck {
        public void truckDrive(){ ... }
    }
    
    您可以将其更改为:

    class A implements Vehicle {
        public void vehicleDrive(){ ... }
    }
    
    class B implements Vehicle {
        public void vehicleDrive(){ ... }
    }
    

    如果我理解正确,您有一个带有一些方法的界面
    Vehicle
    。还有两个接口
    Car
    Truck
    ,还有一些附加方法。您还想在
    Car
    Truck
    界面中使用
    Vehicle
    的方法吗

    如果是这种情况,您可以
    扩展
    接口,与扩展类类似:

    interface Vehicle{
      // Some methods
    }
    
    interface Car extends Vehicle{
      // Some methods
    }
    
    interface Truck extends Vehicle{
      // Some methods
    }
    
    现在如果你有这样一个类:

    class Bmw implements Car{
      // Overwrite methods of both the Cars and Vehicles interfaces
    }
    
    如果需要,您可以将
    Bmw
    保存在
    车辆列表中

    List<Vehicle> allVehicles = new ArrayList<>();
    Vehicle myBmw = new Bmw();
    allVehicles.add(myBmw);
    
    List allVehicles=new ArrayList();
    车辆myBmw=新Bmw();
    所有车辆。添加(myBmw);
    
    为什么要转换接口?您根本无法转换。@B001ᛦ 因为我已经有了这两个接口的实例,并且希望将它们放在一个接口中。接口可以扩展其他接口,所以假设我正确理解您的意思,只需创建一个新接口
    Vehicle
    (无复数),将通用方法声明移动到该新接口,并让其他接口扩展它。然后,实现这两个接口之一的所有类也实现了新接口。如果您想摆脱它们,那么您应该能够在每次使用的基础上用代码中的新接口替换它们。