0

タイピングはどうですか:

public class Example  
{  
    private Cat whiskers;  

    public void makeCat()  
    {  
        whiskers = new Cat();  
    }  
}  

異なります:

public class Example  
{  
    public void makeCat()  
    {  
        Cat whiskers = new Cat();  
    }  
}

最初の例は、ひげという名前のCatオブジェクトしか作成できないため、より手間がかかるようです。なぜそれを宣言するのですか?

4

4 に答える 4

2

最初に、他のメソッド (またはプロパティ) によって同じインスタンス内で使用される可能性があるプライベート変数を宣言しています。ただし、2 番目の例では、ローカル スコープで変数を宣言しているだけです。つまり、この変数は 内でのみ表示されますmakeCat()

于 2012-12-17T04:41:37.447 に答える
1

オブジェクト指向プログラミングの基本についての良い本が必要なようです。

最初のケースでは、「プライベートメンバー変数」を宣言しています。これはクラスの一部になり、他のメンバー関数で使用したり、外部から使用したりすることができます。

2番目のケースでは、「ローカル変数」を宣言しています。これは、それが定義されている関数内でのみ有効な変数であり、関数内での計算にのみ使用されます。クラスの他の機能から/外部からアクセスすることはできません。

于 2012-12-17T04:39:41.950 に答える
0

最初のオブジェクトが 2 番目のオブジェクトの一部である場合、オブジェクトは別のオブジェクトのフィールドで宣言されます。例-:

class Product
  {
    int productId;
    ProductDetail detail;
  }

class ProductDetail
   {
     string brand;
     int price;
     string description;
   }

上記の例では、製品クラスの 1 つのオブジェクトが 1 つの製品に対応し、各製品にはいくつかの詳細があります。したがって、製品クラス オブジェクトが作成されるたびに、JVM によって ProductDetail クラス オブジェクトが作成されます。

最初のシナリオの場合、Example クラス オブジェクトがどこかに作成されると、JVM によって Cat クラス オブジェクトが作成されます。2 番目のシナリオの場合、それはそのメソッドの単なるローカル変数です。また、Example クラス オブジェクトの作成中に Cat オブジェクトはありません。

于 2012-12-17T04:47:10.230 に答える
0

違いは、最初の例がフィールド(別名「インスタンス変数」) を使用することです。このフィールドは、メソッドに渡されずに他のメソッドも参照 (つまり、「使用」) できます。

2 番目の例はローカル変数です。これは、そのメソッド (または他のメソッドに渡された場合) 内でのみ使用できます。

于 2012-12-17T04:47:22.260 に答える