web-dev-qa-db-ja.com

Javaでオブジェクトをインスタンス化する方法は?

私はプログラミングの初心者であり、オブジェクトのインスタンス化でどこが間違っていたのか知​​りたいです。以下にコードを示します。

public class Testing{
    private int Sample(int c)
    {
        int a = 1;
        int b = 2;
        c = a + b;
        return c;
    }
    public static void main(String []args)
    {
        Sample myTest = new Sample();
        System.out.println(c);
    }
}
10
user2640722

コードにSampleクラスがありません。宣言したのはprivateメソッドです。

// private method which takes an int as parameter and returns another int
private int Sample(int c)
{
  int a = 1;
  int b = 2;
  c = a + b;
  return c;
}

現在のスニペットでは、Testingクラスをインスタンス化し、Sampleメソッドを使用する必要があります。クラス定義の前にキーワードclassが付いていることに注意してください。この場合はclass Testing

public class Testing{
  private int Sample(int c)
  {
    int a = 1;
    int b = 2;
    c = a + b;
    return c;
 }
  public static void main(String []args)
 {
    Testing t = new Testing(); // instantiate a Testing class object
    int result = t.Sample(1); // use the instance t to invoke a method on it
    System.out.println(result);
 }
}

しかし、それは本当に意味をなさない、あなたのSampleメソッドは常に3

このようなことをしようとしていますか:

class Sample {
 int a;
 int b;

 Sample(int a, int b) {
    this.a = a;
    this.b = b;
 }

 public int sum() {
    return a + b;
 }
}

public class Testing {
 public static void main(String[] args) {
    Sample myTest = new Sample(1, 2);
    int sum = myTest.sum();
    System.out.println(sum);
 }
}
16
NINCOMPOOP

オブジェクトを実際に作成したいとは思わないでしょう。

あなたのコードスニペットから、2つの数字を追加するSampleという名前の「メソッド」を実行することを理解しています。また、Javaメソッドをインスタンス化する必要はありません。オブジェクトはclassのインスタンスです。メソッドは、このクラスが持つ単なる振る舞いです。

コンパイル済みコードを実行するときにJavaが自動的にクラスのインスタンスを作成し、その中でmain()メソッドを探すため、明示的にインスタンス化する必要はありません。実行する。

おそらくあなたは次のことをしたいだけです:

public class Testing{
    private int sample(int a, int b) {
        return a + b;
    }
    public static void main(String[] args) {
        int c = sample(1, 2);
        System.out.println(c);
    }
}

注:Samplesampleに変更したのは、メソッド名を小文字で、クラス名を大文字で開始することが一般的に受け入れられているため、Testingが正しいためです。その前に。

3
MuchMore

これがあなたのやり方です。

public class Testing{
public int Sample(int c)
{
    int a = 1;
    int b = 2;
    c = a + b;
    return c;
}
public static void main(String []args)
{
    // Creating an Instance of Testing Class
    Testing myTest = new Testing();
    int c =0;
    // Invoking the Sample() function of the Testing Class
    System.out.println(myTest.Sample(c));
}
1
abhinav

newキーワードで正しくインスタンス化していますが、calss名とメソッド呼び出しは間違っています

 Testing myTest = new Testing();
  int result =myTest.Sample(1);  //pass any integer value
  System.out.println(result );
1
Suresh Atta

サンプルはクラスではなく、単なるメソッドです。インスタンスを作成することはできません。あなたはそれを実行するだけです-

int sample = Sample(3);

サンプルをクラスにする場合は、クラスとして定義します。

あなたの場合、メソッドは静的ではないため、静的メソッドMainから直接アクセスすることはできません。アクセスできるように静的にします。または、Testingの新しいインスタンスを作成して使用するだけです-

Testing testing = new Testing();
int sample = testing.Sample(3);
1
Vadim

サンプルメソッドは整数を返すため、結果を取得してどこでも使用できます。

public static void main(String []args)
{
    int myTest = Sample(4555);//input may be any int else
    System.out.println(myTest);
}
1
A.Mokhtari