Java-如何在仅通过超类更改的超类中包含局部变量?
标题可能很混乱,但我不知道如何更好地描述它 基本上,假设我有一个抽象的超类,比如说Java-如何在仅通过超类更改的超类中包含局部变量?,java,inheritance,subclass,super,Java,Inheritance,Subclass,Super,标题可能很混乱,但我不知道如何更好地描述它 基本上,假设我有一个抽象的超类,比如说Person,它包含姓名、年龄和ID,还有一个类扩展自Person,Members 我希望在Members中有一个局部变量,用于存储从此类创建的对象数量,并将其分配给ID变量。 即。 我从成员创建了两个对象,m和m1。我想自动为它们分配ID,每次创建对象时,ID会增加1。 成员m=新成员(“名称”) Members m1=新成员(“Name2”) 然后我调用打印ID的方法,每个对象两次。 m的ID是1。 m1的ID
Person
,它包含姓名、年龄和ID,还有一个类扩展自Person
,Members
我希望在Members
中有一个局部变量,用于存储从此类创建的对象数量,并将其分配给ID变量。
即。
我从成员创建了两个对象,m和m1。我想自动为它们分配ID,每次创建对象时,ID会增加1。
成员m=新成员(“名称”)代码>
Members m1=新成员(“Name2”)代码>
然后我调用打印ID的方法,每个对象两次。
m的ID是1。
m1的ID为2
我准备用一个局部变量,intnumberofobjects=1代码>和objectID代码>,并尝试创建新方法
SetNumber()
{
objectID=numberOfObjects;
numberOfObjects++;
}
但是,每次我创建一个新对象,并调用显示其ID的方法时,它都会将其设置回1
所以,我可以创建一个本地对象,它不会在每次创建新对象时重置吗?
谢谢。您不必迭代子对象,只需为它们创建一个构造函数,该构造函数将隐式地为它们分配唯一的ID
class Member{
private String uuid;
//your other variables below
public Member(){
this.uuid = UUID.randomUUID().toString();
//other variables set up below
}
这将为您创建的每个对象创建一个唯一的ID。
请参见我只需要在变量名之前添加static。
感谢图灵85的回答
其他答案也很有见解。您正在寻找答案。一句忠告:如果代码应该是线程安全的,我们可能需要使用or。仅供参考:局部变量只能在方法内部声明(实际上是在代码块内部),它们不能由类声明。类声明的变量通常被称为字段,可以是静态的(类变量)或非静态的(实例变量)。如果我不理解您想要实现什么,很抱歉,但感觉您想为您创建的每个对象添加一个唯一的ID。查询不是为euch实例生成一个数字/ist,这是关于一个计数器,全球统计manny实例的峰值。使用AtomicInt创建静态变量是正确的方法,并在构造函数调用时增加它。请小心,玩得开心,static
如果使用不当可能会失控,但这是一个非常适合它的应用程序。当然。我会记住的。谢谢