我有一个类A,并且在类A中,我具有函数func1
和func2
。
在同一文件中,我具有类B,在该类B中,我具有函数func3
。
在主类中,声明了obj1
中的对象class A
。
使用此对象,调用func1
中的class A
。
在func1
的{{1}}中,创建了class A
的对象obj2
。
使用此对象,调用class B
中的func3
。
现在,在class B
的{{1}}中,我想用对象func3
调用class B
的{{1}}。为此,我想从func2
的{{1}}中引用该对象。可能吗?如果是,怎么办?
我尝试使用class A
无效。
现在,我将对象obj1
作为参数传递,并且可以正常工作。但是我想不传递它就做同样的事情,因为我想使用对象数组并且每次对象都应该不同时
func3
答案 0 :(得分:0)
有可能吗?
是的
如果是,怎么办?
选项1:作为参数传递
将obj1
作为参数传递给func3
。
或更准确地说,由于从func3
的方法调用obj1
,因此将this
作为参数值传递:
class A {
public void func1()
{
B obj2 = new B();
obj2.func3(this);
}
}
class B {
public void func3(A a)
{
a.func2();
}
}
选项2:传递给构造函数
将A
引用传递给B
构造函数,并使B
在字段中记住它。
class A {
public void func1()
{
B obj2 = new B(this);
obj2.func3();
}
}
class B {
A a;
public B(A a) {
this.a = a;
}
public void func3()
{
this.a.func2();
}
}
选项3:内部类
使类B
成为A
的内部类。与选项2基本相同,但是编译器会为您处理对A
的引用。
class A {
public void func1()
{
B obj2 = new B();
obj2.func3();
}
class B {
public void func3()
{
A.this.func2();
}
}
}