在java中如何访问子类的变量?

xzlaal3s  于 2021-07-03  发布在  Java
关注(0)|答案(2)|浏览(304)

在我的程序中,我有一个用户类和两个子类customer和seller。在程序开始时,我通过authuser变量跟踪当前登录的用户(客户或卖方)。我遇到的问题是,在一个单独的方法中,我必须访问authuser中的一个变量,该变量特定于customer类,并且不在user类中。我该如何访问它,因为如果我尝试获取变量,它会显示一个错误,因为authuser被声明为用户类型而不是客户类型。我试着检查authuser的示例,看看他们是客户还是卖家,并相应地强制转换变量,但没有成功。
编辑:我的错,我不知道它有多模糊。代码设置如下
我的问题是authuser.variableineed无法识别,因为variableineed不是用户类的一部分,即使authuser可以包含客户对象。

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;
    }
syqv5f0l

syqv5f0l1#

如果我正确理解你的问题,那么你必须 User 反对 Customer :

User authUser = /* ... */;

// in your method:
// Check if the logged-in user is a customer
if (authUser instanceof Customer) {
  // Cast the authUser object to a Customer
  Customer customer = (Customer) authUser;
  // Now you can access the attributes of the `Customer` class from the customer object
  System.out.println(customer.customerAttribute);
}
eit6fx6z

eit6fx6z2#

没有片段就很难理解你在说什么。您说过authuser特定于customer类,不在user类中,但authuser也声明为用户类型。我假设它们都在这两个类中,但是您希望访问父类的代码段。您可以使用super关键字引用它。参考文献:https://docs.oracle.com/javase/tutorial/java/iandi/super.html

相关问题