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
如果使用不当可能会失控,但这是一个非常适合它的应用程序。当然。我会记住的。谢谢