1
public class A
{
    private void sub()
    {
        add();
    }

    private void add()
    { 
          -----
    }
}

上記のようにサブで add メソッドを呼び出すことができ、以下と同じことができます

public class A
{
    private void sub()
    {
        A obj_A = new A();
        obj_A.add();
    }
    private void add()
    { 
           -----
    }
}

それらの違いを知りたいです。ありがとうございました。

4

6 に答える 6

4
  • 最初のクラスで A のインスタンスを作成して呼び出すsub()と、メソッド スコープ内に A のインスタンスが 1 つ作成されます。
  • 2 番目のクラスで A のインスタンスを作成して呼び出すsub()と、メソッド スコープ内に A の 2 つのインスタンスが作成されます。
于 2012-12-21T07:23:49.213 に答える
2

Java クラスにはthis、現在のオブジェクトを参照するという特別なメンバーが定義されています。

この回答は、 の詳細を提供しますthis

于 2012-12-21T09:02:25.710 に答える
1

add最初のメソッドでは、クラスの同じインスタンスのメソッドを呼び出しています。add2 番目の例では、クラスの新しいインスタンスを作成し、そのメソッドを呼び出しています。

例えば:

public class A
    {
        private int num = 3;

        private void sub()
        {
          num = 10;            
          add();
        }
        private void add()
        { 
              system.out.println(num);
        }
    }

public class A
{
    private int num = 3;

    private void sub()
    {
        A obj_A = new A();
        num = 10;      
        obj_A.add();
    }
    private void add()
    { 
           system.out.println(num);
    }
}

最初の例では、10 が出力されます。2 番目の例では、3 が出力されます。これは、最初の例では、以前に変更したインスタンス自体の num を出力しているためです。2 番目の例では、num 値も変更しますが、作成した新しいクラスの add を呼び出しているため、3 が出力されます。

于 2012-12-21T07:26:53.317 に答える
0
private void sub()
{
  add();
}

メソッドを呼び出しadd()たのと同じオブジェクトでメソッドを呼び出していますsub()

private void sub()
{
   A obj_A = new A();
   obj_A.add();
}

タイプ A の新しいオブジェクトを作成し、その上でメソッドを呼び出しadd()ます。

于 2012-12-21T07:24:16.017 に答える
0

2 番目の方法では、add メソッドを呼び出すために 2 つのオブジェクトが作成されます。メソッド 1 を使用すると、1 つのオブジェクトを作成するだけで add メソッドにアクセスできます。

于 2012-12-21T07:24:45.107 に答える
0

2番目のアプローチでは、不必要にオブジェクトを作成しています。

最初のアプローチの方が優れています。

于 2012-12-21T07:25:06.713 に答える