私はプログラミングの初心者であり、オブジェクトのインスタンス化でどこが間違っていたのか知りたいです。以下にコードを示します。
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);
}
}
コードに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);
}
}
オブジェクトを実際に作成したいとは思わないでしょう。
あなたのコードスニペットから、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);
}
}
注:Sample
をsample
に変更したのは、メソッド名を小文字で、クラス名を大文字で開始することが一般的に受け入れられているため、Testing
が正しいためです。その前に。
これがあなたのやり方です。
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));
}
new
キーワードで正しくインスタンス化していますが、calss名とメソッド呼び出しは間違っています
Testing myTest = new Testing();
int result =myTest.Sample(1); //pass any integer value
System.out.println(result );
サンプルはクラスではなく、単なるメソッドです。インスタンスを作成することはできません。あなたはそれを実行するだけです-
int sample = Sample(3);
サンプルをクラスにする場合は、クラスとして定義します。
あなたの場合、メソッドは静的ではないため、静的メソッドMainから直接アクセスすることはできません。アクセスできるように静的にします。または、Testingの新しいインスタンスを作成して使用するだけです-
Testing testing = new Testing();
int sample = testing.Sample(3);
サンプルメソッドは整数を返すため、結果を取得してどこでも使用できます。
public static void main(String []args)
{
int myTest = Sample(4555);//input may be any int else
System.out.println(myTest);
}