【问题标题】:How to update a method that can be used for two different objects in Java如何更新可用于 Java 中两个不同对象的方法
【发布时间】:2021-10-26 20:44:30
【问题描述】:

我有一个名为 Orders 的对象。在这个对象中,我有两个参数 Vehicle 和 Customer。 现在我有一个名为 showOrder 的方法。此方法将打印车辆类型和客户姓名。

    public void showOrder() {
    System.out.println("-------------------------------------------------------|Order Placed|-------------------------------------------------------");
    System.out.println("The order for the car type " + vehicle.getType() + " it was place on the name " + customer.getName() + " in date of " + date);
    System.out.println("----------------------------------------------------------------------------------------------------------------------------");
}

假设将来,我将在对象 Order 中添加一个新的 Building 属性。现在如何更改此方法,以便将来添加新属性时,可以使用它来显示建筑物和车辆类型?它们都将实现 Rentable 接口。 我的想法是我想让这段代码尽可能通用和独立......

我希望我已经足够清楚了。 谢谢,

【问题讨论】:

  • 您的Rentable 界面是什么样的? Orders 班级的其余部分是什么样的?
  • 如果您有一些订单是车辆,而其他订单是建筑物,您可以使用多态性来定义一个超类 AbstractOrder 和两个子类 VehicleOrder 和 BuildingOrder。超类可以定义和调用抽象方法,例如 showOrder() 或 getDisplayName()。 OTOH,如果一个订单可以同时拥有车辆和建筑物,那么您只需要一个类。

标签: java oop generics


【解决方案1】:

如果我理解正确,您希望能够将Vehicle 类型和Building 类型的对象放入变量vehicle。为此,您可以使用 Vehicle 和 Building 类都将从中继承的抽象超类。它可能看起来像这样:

public abstract class AbstractClass {
    public abstract String getType();
}

车辆类:

public class Vehicle extends AbstractClass {
    String type;
    public String getType() {
        return type;
    }
}

Building 类看起来非常相似:

public class Building extends AbstractClass {
    String type;
    public String getType() {
        return type;
    }
}

现在,在Order 类中,您需要将变量vehicle 的类型更改为AbstractClass。这样,您可以将Vehicle 类和Building 类的对象放入该变量中。 showOrder 方法中的代码基本上与您可以放入 vehicle 对象的两个类都具有 getType 方法相同。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2021-03-05
    • 2015-11-15
    • 2023-01-20
    • 2017-06-25
    • 2016-07-14
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多