java - 如何更新可用于 Java 中两个不同对象的方法
问题描述
我有一个名为 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 接口。我的想法是我想让这段代码尽可能通用和独立......
我希望我足够清楚。谢谢,
解决方案
如果我理解正确,您希望能够将Vehicle
type 和Building
type 的对象放入 variable 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如何比较2个ArrayList或迭代器的结果
- java - 如何解决“没有这样的目录或文件”的错误?
- php - 用于测试环境的 Symfony 4 sqlite 数据库创建
- amazon-web-services - 如何了解重新创建的托管区域已准备好进行 ACM 证书的 DNS 验证
- php - 数组的最后一个元素
- c++ - 如何在 C++ 中使用广度优先搜索解决 8 题
- ruby-on-rails-5 - Rails 5 路由:为什么“redirect_to @model”与“redirect_to model_path(@model.id)”不同?
- android - Jetpack Navigation Deep Link 带有错误的 ActionBar 按钮
- azure-databricks - 在 azure databricks 中查找笔记本的沿袭
- c - 参数类型声明可以移动到函数体中吗?