如何创建可由Java中的多个类和多个方法访问的变量

时间:2015-04-27 17:51:20

标签: java eclipse

我想在我的Java程序中创建一个全局变量,或者至少可以通过多个类的多个方法访问它。我能说流利的C,VB6,Jovial和许多其他语言,但我不懂Java。我只为WindowBuilder选择了它!

这是一些类似Java的伪代码,用于我想要的东西,最小化以显示我想要做的事情。我知道它不是按原样编译的;我关注的重点是NumberOfMembers变量 - 应该如何声明和访问它:

public class Prelim {
    public String FileName;
    public int NumberOfMembers;  //instantiate?  I've tried all I know
    //to do so!  Instantiate where, all methods that use?

    private void myMethod_a() {
        FileName = "C:\myfilename";
        ReadRoster();
        //modify roster
        WriteRoster();
        System.out.println(NumberOfMembers);
    }


}

public class ReadWriteRoster /* maybe extends Prelim?? */ {  
    public void ReadRoster(){
        //read roster file using FileName
        NumberOfMembers = 100;
    }
    public void WriteRoster(){
       //write roster file using FileName
        for (int num = 0; num < NumberOfMembers; num++){
        }
        //do the write`enter code here`
        }
    }
}

3 个答案:

答案 0 :(得分:1)

Java不提供与C和其他语言相同的全局变量。每个变量都与特定的类相关联,并且通常与该类的特定实例相关联。这两个备选方案通过使用static关键字来区分,该关键字指示变量(或方法或嵌套类)仅与其主机类相关联,而不与该类的任何特定对象相关联。

实现的最简单方法可能是从静态声明NumberOfMembers开始,如下所示:

public class Prelim {
    // ...
    public static int NumberOfMembers;
    // ...
}

然后,无论您想在任何其他类中引用它,您都需要使用该类限定其名称,以告诉Java您所指的那个名称的变量:

    // ...
    Prelim.NumberOfMembers = 100;
    // ...

虽然不是绝对必要,但作为一种风格,我建议甚至在主机类内使用合格的表格。

话虽如此,我对你的代码的看法很少,这强调了你承认你没有得到Java。类应该代表的东西,并且为了强化自己和他人,他们的名字应该是名词或名词短语。

您似乎正在围绕处理算法中的步骤组织课程。这会导致代码的任意排列,并直接导致代码注释中有关实例化类Prelim的一些问题。您正在尝试编写过程代码,但要以面向对象的形式进行修饰。您可以用Java编写过程代码,但您的任务可能也适用于真正的面向对象的方法。

乍一看,代码的面向对象版本可能涉及将其内部化:看起来它至少需要一个具有实例变量Roster的类numberOfMembers和方法{{1 }和read()。这些方法可以自然地引用实例变量,因为它们将引用同一对象的成员变量 。这也可以更好地适应同时在计划中拥有多个名册,每个名册都有自己的成员数。

答案 1 :(得分:0)

你可以使用&#34;静态&#34;关键词例子

static int i = 3;

通过这个,你可以访问包中所有类的变量i,你可以在所有其他包中导入它。

答案 2 :(得分:0)

更复杂的例子是使用枚举类型。使用枚举作为单身人士是一种很好的做法。