所以这是代码,我不明白的几行。
account acct = new account(); // making a new object named acct, type:account
ConsoleAccountEvents c1 = new ConsoleAccountEvents(acct); // new object created with parameters.
acct.addObserver(c1); // also not sure.
acct.addTransaction(100.00); // not sure....
这是Java。我不确定如何将参数传递给构造函数。
答案 0 :(得分:1)
在java中,当使用new
关键字创建类的对象时,将调用构造函数。因此,要使用某个参数调用构造函数,您只需根据您的需求示例创建一个带参数的对象。
class ConsoleAccountEvents {
Account account;
public ConsoleAccountEvents(Account account) {
this.account = account;
}
}
class Account {
}
所以当你用
创建对象时Account acct = new Account();
ConsoleAccountEvents c1 = new ConsoleAccountEvents(acct);
所以这里将调用参数化构造函数,并且该对象将在ConsoleAccountEvents
类
答案 1 :(得分:0)
你的ConsoleAccountEvents
课程必须是这样的 -
class ConsoleAccountEvents {
Account accObject; // you have an object of 'Account' class as a member variable in this class
// other variables
public ConsoleAccountEvents() {
// body here
}
public ConsoleAccountEvents(Account accObject) {
this.accObject = accObject; // see below
// body here
}
// others
}
执行此操作ConsoleAccountEvents c1 = new ConsoleAccountEvents(acct);
您正在调用参数化构造函数,该构造函数将Account
对象作为参数,并通常使用它accObject
初始化Account
(ConsoleAccountEvents
类的对象)。
现在,对于acct.addObserver(c1);
在Account
课程中,您必须拥有以addObserver
为参数的方法ConsoleAccountEvents
。像
void addObserver(ConsoleAccountEvents evOb) {
// body
}
PS: 请遵循java命名约定和其他约定,例如大写类名的第一个字母等。
如果您不通过Java Language Tutorial,stackoverflow将不会有多大帮助。祝你好运......!
答案 2 :(得分:0)
我认为您可能正在寻找的是new
关键字如何运作,但让我彻底:
有关在Java中构造对象的一些注意事项:
new Account()
。new SomeClass(someObject)
,someObject
是传递给SomeClass构造函数的参数。在类的构造函数中,参数使用类型和名称定义:
class ConsoleAccountEvents{
Account account;
ConsoleAccountEvents(Account a){
account = a;
}
}
此处参数" a
"被定义为Account
"类型" - 发送到构造函数的参数必须是Account
类的实例,换句话说,构造函数需要Account
对象。因此,为了构造ConsoleAccountEvents
对象,我们必须将Account
对象作为参数传递给它:
Account acct = new Account();
ConsoleAccountEvents c1 = new ConsoleAccountEvents(acct)
使用" new"调用以下类的构造函数。对于Account类,我们不需要创建对象的参数 - 它有默认构造函数,但是我们需要使用一个Account对象 - acct
- as允许构造ConsoleAccountEvents
的参数,因为它的构造函数在其定义中有一个Account类型参数。
在其他语言中,有更多方法可以构建对象。例如,在C ++中,程序员可以选择将哪些对象保存在"堆"和#34;堆栈"通过在使用new
关键字vs直接调用构造函数之间切换,就好像它是任何其他函数一样。在Java中,这是不可能的。几乎所有对象都是使用new关键字创建的,或者以某种方式复制另一个对象。我相信即使序列化和反序列化也必须在new
处开始创建第一个对象。