[英]I try to use polymorphism but my code does not work as i excpected, could anyone help me solve this problem?
UserManager.java:用户管理器.java:
public class UserManager {
public void add(User user) {
System.out.println(user.getUserNumber() + " user added");
}
}
StudentManager.java: StudentManager.java:
public class StudentManager extends UserManager {
@Override
public void add(User user) {
System.out.println(user.getUserNumber() + " student added");
}
}
Main.java:主要.java:
public class Main {
public static void main(String[] args) {
Student student1 = new Student();
student1.setUserNumber("12345");
UserManager userManager = new UserManager();
userManager.add(student1);
}
}
Expecting Output:12345 student added.期待 Output:12345 学生添加。
Real output:12345 user added.添加了真正的 output:12345 用户。
Why i get this output?为什么我得到这个 output?
If you want to use polyformphism as you expected, you should instantiate the UserManager
object as StudentManager
, so the JVM will invoke the overriden add
method.如果您想按预期使用多态,则应将UserManager
object 实例化为StudentManager
,因此 JVM 将调用覆盖的add
方法。 Here is the right way to do that:这是正确的方法:
public class Main {
public static void main(String[] args) {
Student student1 = new Student();
student1.setUserNumber("12345");
UserManager userManager = new StudentManager();
userManager.add(student1);
}
}
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.