Java - 如何在超类中拥有一个只能通过超类更改的局部变量?

Java - How To Have A Local Variable In A Superclass That Changes Only Through The Superclass?

标题可能有点乱,但我不知道怎么形容才好。

基本上,假设我有一个抽象超级class,假设包含姓名、年龄和 ID 的 Person,以及从 [=11= 延伸的另一个 class ], Members.

我想在 Members 中有一个局部变量,用于存储从这个 class 创建了多少 object,并将其分配给 ID 变量。 IE。 我从 Members、m 和 m1 创建了两个 object。我想为他们自动分配他们的 ID,每次创建 object 时该 ID 递增 1。 Members m = new Member("Name"); Members m1 = new Member("Name2"); 然后我调用打印 ID 的方法,每个 object 两次。 m's ID is 1. m1's ID is 2

我打算通过使用局部变量 int numberOfObjects = 1;objectID; 来实现这一点,并尝试创建一种新方法 SetNumber() { objectID = numberOfObjects; numberOfObjects++; }

但是,每次我创建一个新的 object,并调用显示其 ID 的方法时,它都会将其设置回一个。

那么,我可以创建一个本地 object,它不会在我每次创建新的 object 时都重置吗? 谢谢。

您不必迭代您的子对象,只需为它们创建一个构造函数,隐式地为它们分配一个唯一的 ID。

class Member{

    private String uuid;
    //your other variables below

    public Member(){
        this.uuid = UUID.randomUUID().toString();
        //other variables set up below   
    }

这将为您创建的每个对象创建一个唯一的 ID。 参见 https://docs.oracle.com/javase/7/docs/api/java/util/UUID.html

我只需要在变量名前加上static。 感谢 turing85 的回答。 https://whosebug.com/users/4216641/turing85

其他答案也很有见地。