2

申し訳ありませんが、私はこの答えが明白であることを知っていますが、私はただ遅いと思います。誰かがインスタンス変数とコンストラクターの明確な定義を教えてもらえますか?

インスタンス変数:
クラスには、1次元配列であるnumbersという名前のインスタンス変数が必要です。配列のサイズはコンストラクターによって決定されます。他のインスタンス変数があると便利な場合とそうでない場合があります。

コンストラクター:
2つのコンストラクターを作成します。1つのコンストラクターは、引数のないデフォルトのコンストラクターになります。10個のintを保持する配列を作成し、配列の各要素を42に設定します。

2番目のコンストラクターは1つの引数を取ります。これは、intの配列になります。このコンストラクターは、引数と同じサイズのインスタンス配列を作成し、整数を引数からインスタンス配列にコピーします。


どうやって始めたらいいのかわからない。

4

3 に答える 3

5

インスタンス メンバーは、静的変数でない限り、クラス オブジェクトに属する単純な変数です。厳密に言えば、静的変数はオブジェクトではなくクラスに属します。コンストラクターは、オブジェクトを作成および初期化するために呼び出す特別なメソッドです。クラスの名前でもあります。

だからあなたが欲しいのは

class WhateverYourClassIs
{
   int[] members;
   public WhateverYourClassIs()//constructor. 
   {
    members = new int[10] ;
    }
   public WhateverYourClassIs(int n) //overloaded constructor.
   {
     members = new int[n] ;
   }
}

上記の例でわかるように、メソッドなどのコンストラクターはオーバーロードできます。オーバーロードされるということは、署名が異なることを意味します。1 つのコンストラクターは引数を取りませんが、別のコンストラクターは int である単一の引数を取ります。

于 2012-11-07T00:47:36.873 に答える
2

コンストラクターは、そのクラスのインスタンスを生成するクラスの一部です。クラスと同じ名前で、戻り型はありません。例えば:

public class Foo{
  public Foo(){
      System.out.println("Hi from the constructor!!");
   }
}

インスタンスフィールドは、クラスの各インスタンスにローカルな変数です。パブリック、プロテクト、またはプライベートインスタンスフィールドのいずれかを持つことができます。プライベートインスタンスフィールドは外部から「隠され」ており、インスタンス自体のみがアクセスできます。パブリックのものは、.演算子を使用してアクセスされます。例えば:

public class Foo {public int x; private int y; }

Foo foo = new Foo(); //Thats a call to the constructor Foo()
foo.x = 1;
foo.y; //Error can't access private variables from outside the class

あなたの場合、あなたは

class Name{
   int[] numbers;
   public Name(){
      numbers = new int[10];
   }
   public Name(int n){
      numbers = new int[n];
   }
}

ここでは、コンストラクターをオーバーロードし(メソッドの場合と同様)、配列を作成します。これは、この場合intは固定長のsのリストです。

于 2012-11-07T00:45:51.787 に答える
1
public class MyClass{
    int numbers[];
    MyClass(){
        numbers = new int[10];
        for (int i = 0; i < numbers.length; i++) {
                numbers[i] = 42;
        }
    }
    MyClass(int[] array){
        numbers = new int[array.length];
        for (int i = 0; i < array.length; i++) {
            numbers[i] = array[i];
        }
    }
}
于 2012-11-07T01:05:47.893 に答える