如何更新可用于 Java 中两个不同对象的方法

Posted

技术标签:

【中文标题】如何更新可用于 Java 中两个不同对象的方法【英文标题】:How to update a method that can be used for two different objects in 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,如果一个订单可以同时拥有车辆和建筑物,那么您只需要一个类。 【参考方案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 方法相同。

【讨论】:

以上是关于如何更新可用于 Java 中两个不同对象的方法的主要内容,如果未能解决你的问题,请参考以下文章

使用Java API操作HDFS时,_方法用于获取文件列表?

Django:使用自定义保存方法更新表单中的对象

如何强制更新视图

如何通过对不同列使用可重用代码在 JDBC 中编写一个更新查询(更新 1 列)?

Java中的compareTo()函数是怎么用的?

更新两个不同表中的字段的最有效方法?