提问人:MagentaPink 提问时间:12/20/2022 更新时间:12/20/2022 访问量:96
如何将父类强制转换为子类
How to narrow cast parent class to child class
问:
我正在创建一个大学管理系统,其中我有一个 Database 类,我在其中存储类 User 的 currentUser 对象。成功登录后,currentUser 对象将成为 Student 或 Teacher 对象(它们是 User 的子对象)。但是当我尝试在 currentUser 对象上调用 Student 的方法时,它不起作用。
这里是对象currentUser: 所以currentUser没有初始化,我不想在这个阶段向下投射,public static User currentUser;
这是我授权用户的方式: `
if(student.getLogin().equals(login) && student.getPassword().equals(password)) {
currentUser = student;
isLogedIn = true;
}
`
我尝试像这样将用户类型转换为学生: `
currentUser = student;
currentUser = (Student) currentUser;
` 但我仍然无法在 currentUser 上调用 Student 方法。我该如何解决?
答:
0赞
Mureinik
12/20/2022
#1
currentUser
是 类型的变量,因此您只能通过它使用它(及其父级)方法。User
您可以将实际实例转换为 并将其存储在该类型的临时变量中,以使用 的方法:Student
Student
Student currentStudent = (Student) currentUser;
currentStudent.someStudentMethod();
当然,你也可以省略存储,直接在强制转换实例上调用该方法:
((Student) currentUser).someStudentMethod();
评论
Student student = (Student) currentUser;
((Student) currentUser).someMethodOfStudent();
User currentUser
User
User
User
Student
Student currentUser