繁体   English   中英

我尝试使用多态性,但我的代码不能像我预期的那样工作,有人可以帮我解决这个问题吗?

[英]I try to use polymorphism but my code does not work as i excpected, could anyone help me solve this problem?

用户管理器.java:

public class UserManager {
        public void add(User user) {
            System.out.println(user.getUserNumber() + " user added");
        }
}

StudentManager.java:

public class StudentManager extends UserManager {
    @Override
    public void add(User user) {
        System.out.println(user.getUserNumber() + "  student added");
    }
}

主要.java:

public class Main {
    public static void main(String[] args) {
        Student student1 = new Student();
        student1.setUserNumber("12345");

        UserManager userManager = new UserManager();       
        userManager.add(student1);

    }
}
    

期待 Output:12345 学生添加。

添加了真正的 output:12345 用户。

为什么我得到这个 output?

如果您想按预期使用多态,则应将UserManager object 实例化为StudentManager ,因此 JVM 将调用覆盖的add方法。 这是正确的方法:

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.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM