【问题标题】:Polymorphism mimic for class in packages包中类的多态性模拟
【发布时间】:2013-02-19 08:41:30
【问题描述】:

OOP 允许继承抽象方法,因此每个孩子都有自己的实现。这种能力通常级联到对应用程序进行编码,因此,它在不同时间调用相同的消息并根据实例化的子项的类型接收不同的输出。这个概念被称为多态性。

想象一下,多态性为开发人员提供了创建对象的机会。可以为该对象分配对多个类实例之一的引用,这些实例都包含具有相同签名但具有不同实现的方法。此分配是通过条件语句进行的。之后使用该对象调用方法,而该对象又会根据适当的条件执行不同的操作。

使用相同的视图,但现在我们正在处理一个 Java 应用程序,该应用程序具有许多包含同名类的包。应用程序的所有用户都通过登录类然后路由到主菜单屏幕(主类)的场景。有两个不同的用户,因此 Main 类的两个版本,每个版本都在两个包中(分别是:admin 和 user),依次充当相应包的其余部分的入口点。

是否有一个多态模拟让我们在 Login 类中声明一个对象,该对象在身份验证期间,然后从用户类型分配对任一包映射的引用?

之后调用reference.Main.setVisible(true);会打开当前登录用户类型的Main类。

【问题讨论】:

  • 不需要用一半的问题来给我们定义多态性。
  • ...除非问题是这样给他的
  • 谢谢 A--C,这是我第一次来这里。 McAlex,这不是我的问题,而是我自己的问题。
  • 我的目的是对我的程序进行软编码。我有包含每个用户的所有JFrames 的包。每个包都包含入口类Main。身份验证后,我只想将Main.setVisible(true); 之类的语句编辑为package.Main.setVisible(true);,其中 package 是对(当前用户的)其中一个包的引用。
  • 您的问题越简洁,人们就越有可能/乐意快速帮助您。

标签: java polymorphism package mime


【解决方案1】:

让两个版本的菜单都实现一个接口/抽象类。然后在登录类中多态使用接口。

例如,创建一个名为 Menu 的抽象类,并让 userMenu 和 adminMenu 类扩展 Menu。在您的 Login 类中,创建一个 Menu 类型的字段(例如,将其称为 m)。根据用户是谁,在运行时分配新的 UserMenu 或 AdminMenu。然后当你想打开菜单时,调用m.setVisible(true)

【讨论】:

  • 我希望有办法给你私信。 @jedyobidan:只是为了学习,没有办法将包的引用分配给变量或对象。
  • 这样我就可以编码一次验证过程。对于添加其他用户类型的情况,我只是在数据库中添加了一个包和一条记录,而无需编辑 Login 类。
  • 听起来你需要一个工厂方法。创建一个名为public static Menu getMenu(String type) 的方法,该方法根据输入字符串返回适当的对象类。每次添加新用户类型时,您仍然需要编辑该方法。但是如果你真的想只使用类的名称来分配菜单变量,你可能需要反思。
  • 你知道反思是一个非常高级的话题,所以我会花一个星期的时间来研究它。但再次非常感谢@jedyobidan。
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2010-10-06
  • 1970-01-01
  • 1970-01-01
  • 2010-12-21
相关资源
最近更新 更多