【发布时间】:2021-03-18 06:14:35
【问题描述】:
在我的程序中,我有一个 User 类和两个子类 Customer 和 Seller。在程序开始时,我跟踪当前通过 authUser 变量登录的用户(客户或卖方)。我遇到的问题是,在一个单独的方法中,我必须访问 authUser 中特定于 Customer 类且不存在于 User 类中的变量。我将如何访问它,因为如果我尝试获取变量,它会显示错误,因为技术上 authUser 被声明为 User 类型而不是 Customer 类型。我已经尝试检查 authUser 的实例,看看他们是客户还是卖家,并相应地转换变量,但没有奏效。
编辑:我的错,我没有意识到它是多么模糊。代码设置如下
我的问题是无法识别 authUser.variableINeed,因为 variableINeed 不是 User 类的一部分,即使 authUser 可能包含 Customer 对象。
public class User {
String user;
String pass;
}
public class Customer extends User{
LinkedList<> variableINeed;
}
public class Seller extends User{
//other irrelevant info
}
public class Implementation(){
public static void main(String[] args){
//calls a login() function which initializes authUser to either a Customer or Seller object based on who logs in
//method that needs authUser.variableINeed
}
User authUser;
}
【问题讨论】:
-
分享你的尝试
-
另外 - “那不起作用”不是很丰富。究竟是什么问题?
-
是的,请将您的代码以及任何错误消息的确切文本添加到您的问题中。
-
您需要发布minimal reproducible example。显示类的简化版本以及您想要访问的内容。确保示例编译没有错误。在代码中使用 cmets 来解释你想要做什么。
-
为什么不在 User 类中包含
List needs?或者更确切地说是一种方法getNeeds()?这可能只为用户返回 null,但对于客户可以返回真实列表?让多态性为你工作,而不是试图与之抗争。
标签: java oop abstract-class