如何更新可用于 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时,_方法用于获取文件列表?