调用和回调(委托)调用:
class A
{
    public void foo() { new B().foo(); }
    public void bar() { }
}
class B
{
    public void foo() { new A().bar(); }
}
静态方法
class A
{
    static public void foo() { B.foo(); }
    static public void bar() { }
}
class B
{
    static public void foo() { A.bar(); }
}
回调形式1
class A
{
    public void foo() { new B().foo(this); }
    public void bar() { }
}
class B
{
    public void foo(A a) { a.bar(); }
}
回调形式2
class A
{
    public void foo() { new B().foo(this.bar); }
    public void bar() { }
}
class B
{
    public void foo(Action action) { action(); }
}