我尝试使用多态,但我的代码无法正常工作,谁能帮我解决这个问题?

问题描述

UserManager.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");
    }
}

Main.java:

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

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

    }
}
    

预期输出:12345 名学生已添加。

实际输出:12345 个用户添加。

为什么我得到这个输出?

解决方法

如果您想按预期使用多态性,您应该将 UserManager 对象实例化为 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);
   }
}

相关问答

错误1:Request method ‘DELETE‘ not supported 错误还原:...
错误1:启动docker镜像时报错:Error response from daemon:...
错误1:private field ‘xxx‘ is never assigned 按Alt...
报错如下,通过源不能下载,最后警告pip需升级版本 Requirem...