簡體   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