方法之间的对象和转移对象

时间:2018-12-11 10:33:42

标签: java oop

我正在学习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起作用了?

1 个答案:

答案 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和该对象的处理方式