Java 默认/参数化构造函数=如何在包中所有JFrames的方法中编辑它

Java 默认/参数化构造函数=如何在包中所有JFrames的方法中编辑它,java,netbeans,Java,Netbeans,对于我的PAT For school,我创建了默认构造函数和参数化构造函数,如下所示: public class Client { //attributes private String clientName; private String clientPass; private double currentBal; private double savingsBal; private boolean verify; //default constructor public Client(

对于我的PAT For school,我创建了默认构造函数和参数化构造函数,如下所示:

public class Client
{

//attributes
private String clientName;
private String clientPass;
private double currentBal;
private double savingsBal;
private boolean verify;

//default constructor

public Client()
{
            clientName = "";
            clientPass = "";
            currentBal = 0.0;
            savingsBal = 0.0;
            verify = false; 
}
//parameterised constructor
private Client(String username,String password,int accNum,
            double curBal,double savBal, boolean ver)
{
            clientName = username;
            clientPass = password;
            currentBal = curBal;
            savingsBal = savBal;
            verify = ver;
}
问题是,在此之后我创建了一些方法,为了使它们正常工作,它们需要更改最初在构造函数中为包中的所有不同形式分配的值。 不幸的是,这似乎不起作用。不管我做什么,变量只是暂时改变的。 我错过什么了吗?在我的构造函数中是否有我应该做的不同的事情,或者我是否需要在我的方法中做一些额外的事情来改变这一点

非常感谢您的帮助。:)

编辑: 以下是我的方法之一:

public void newClient(String username,String password) throws IOException
    {
        //Sets username and password to user input and assigns the Client 
account balances.
        clientName = username;
        clientPass = password;
        savingsBal = (int)((Math.random()*100000000)) / 100.0;
        currentBal = (int)((Math.random()*100000000)) / 100.0;
        //Calls BufferedWriter to write a line to the text file with all 
user information.
        BufferedWriter bw = new BufferedWriter (new 
FileWriter("ClientDatabase.txt",true));

bw.write(clientName+"_"+clientPass+"_"+currentBal+"_"+savingsBal);
            bw.newLine();
            //Closes BufferedWriter
            bw.close();
                }
    //Verifies new Client via their username and password.

这很好,并且都会写入文本文件。但是,当我尝试在我的任何其他JFrame中使用这些值时,它们似乎已被重置为0或null…

在我看来,您似乎没有实际使用在newClient方法(用户名和密码)中获得的值来使用参数化构造函数初始化新的客户端对象;您只需将它们指定给一些全局值。确保您创建了一个新的客户端实例,并让JFrames的其余部分引用该对象。

在您的示例中,您没有引用
Client
类的实例。
newClient
-方法是哪个类的成员?可能不是
客户端
。您只能在该类中使用这样的类变量。在外部,您需要一个引用(如
Client c=new Client()
),然后您可以对实例成员进行变异(如
c.setName(aName)
)Hi@Jochem Kleine,我该怎么做?我相信你会知道,我对这方面还相当陌生我假设newClient与Client本身属于不同的类,是这样吗?(如果不是,很可能是)您希望newClient做的是创建一个新的客户端对象;客户端类的实例。这就是参数化构造函数发挥作用的地方。而不是“Client c=new Client();”,您可以这样创建一个客户端对象:“client c=new client(username、password、accNum、curball、savBall、ver)”。如果您还没有这样做,请创建getter和setter(如“public String getName()”之类的方法)从您的客户机对象检索客户机名称,如@FildorI试图详细说明的那样,如果有任何不清楚的地方,请询问。