我正在学习Java相当新的知识,而且我基本上是初学者。 我正在做一个完全没有意义的小项目,但是仅仅是为了学习OOP。
这是我在下面执行的代码和注释。
public void main() {
Notebook noteBook = new Notebook(); //I add notebook just to track my notes on the subject
Konto kontobank = kontoErsteller();
// So here it worked but I did not understand how and why
// It might be the scope problem here. I did not even understand why
// Konto Kontobank = bankKonto1 worked? (bankKonto1 is the returned
// value)
int x = start(kontobank); //so that funtion returns something.
}
/*
* Here I create default 2 kontos. So that I can transfer money in between. Also in real life
* in a bank when we habve thebankcard that means we already have an account.
* I return an integer value back to track if things went ok
*/
public Konto kontoErsteller() {
int kontoErstellerReturn = 0;
Konto bankKonto1 = new Konto();
Konto bankKonto2 = new Konto();
return bankKonto1;
}
/*
* I will start with entrance but I should return to the owner of
* account1 so I should be manupulating bankKonto1
*/
public int start(Konto bankKonto) {
Konto bankKonto1 = bankKonto;
Entrance neuEnterance = new Entrance();
//KontoMenu kontoMenu=new KontoMenu(bankKonto.getUniqID());
String[] statuse = neuEnterance.start();
//System.out.println(statuse);
if (statuse[0] == "True") {
System.out.println("Entered");
//Konto bankKonto=new Konto();
System.out.println("Hello " + bankKonto1.getKontoOwner());
System.out.println("Your current status is " + bankKonto1.getInitialGeld() + " €");
double newValue = menuItem(Double.parseDouble(bankKonto1.getInitialGeld()));
bankKonto1.setNewAmount(newValue);
System.out.println("Your new status is " + bankKonto1.getInitialGeld() + " €");
//KontoMenu kontoMenu=new KontoMenu(bankKonto.getUniqID());
//kontoMenu.menuItem(bankKonto.getUniqID());
}
return 0;
}
所以我实际上并不希望发送Konto对象,我想在kontoErsteller中创建它们,然后在需要时使用它们的名字bankKonto1和bankKonto2
Konto kontobank = kontoErsteller();
int x = start(kontobank);
所以我的问题是
因此,它在这里有效,但我不知道如何以及为什么。我什至不知道为什么Konto kontobank = bankKonto1
起作用了?
答案 0 :(得分:0)
“因此,我实际上不希望发送Konto对象,我想在kontoErsteller中创建它们,然后在需要时使用它们的名称bankKonto1和bankKonto2来使用它们”
您不希望它们成为kontoErsteller
方法中的局部变量,而是类成员。为此,您可能应该有两个类,一个Konto
类和一个处理Konto
对象的类。因此,我们将此类称为KontoHandler
public class KontoHandler {
Konto bankKonto1;
Konto bankKonto2;
}
然后可以在此类的构造函数中代替kontoErsteller
public class KontoHandler {
Konto bankKonto1;
Konto bankKonto2;
public KontoHandler() {
bankKonto1 = new Konto();
bankKonto2 = new Konto();
}
}
如果将方法start
移至此类,则可以从其内部访问bankKonto1和bankKonto2,而无需发送konto作为参数
public int start() {
Entrance neuEnterance = new Entrance();
...
}
这只是一个示例,但主要要点是区分数据对象Konto和该对象的处理方式