Java链表项覆盖?

Java linked list item overwriting?

我有一个帐户链接列表,其中包含员工和经理(从帐户继承)。问题是我注意到最后添加的项目似乎覆盖了列表中的其余项目。为什么要这样做?我做错了什么?谢谢。我将把我的代码和控制台输出放在下面。如果我真的很愚蠢并且遗漏了一些明显的东西,请提前道歉!

public class Database {
static List <Account> Accounts = new LinkedList<Account>();

public static void main(String[] args) {
        Employee Geoff = new Employee("Geoff", "password1");
        Manager Bob = new Manager("Bob", "password2");
        Employee John = new Employee("John", "password3");

        Accounts.add(Geoff);
        Accounts.add(Bob);
        Accounts.add(John);
        list();
    }

public static void list() {
    for (Account u : Accounts) {
            System.out.println(u);
    }
}

控制台输出为:

John, John, John 

:(

编辑:代码已更改对不起大家!

public abstract class Account {

    protected static String name;
    protected static String passcode;


    public User(String name, String passcode) {
        this.name = name;
        this.passcode = passcode;
    }
}

经理和员工都继承自此,所以对于经理:

public Manager(String name, String passcode) {
    super(name, passcode);

}

从字段声明中删除关键字 `static,它将正常工作。

static 变量与 class 关联,而不是与对象关联。这意味着这些字段在 class.

的每个实例之间共享

Class 变量(静态)将只有一个实例,该实例在 class 的所有实例之间共享。这意味着每次你说 "this.name",它在语义上等同于说 "User.name",因为 "this" 指的是实例,而不是 class。

将 class 变量(静态变量)更改为实例变量(非静态变量),一切都会如您所愿。

这是解释 class 与实例变量的文档。

http://docs.oracle.com/javase/tutorial/java/javaOO/classvars.html