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
其他答案也很有见地。
标题可能有点乱,但我不知道怎么形容才好。
基本上,假设我有一个抽象超级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
其他答案也很有见地。