JAVA C# メソッドとクラスの動きの検証。
using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
namespace ConsoleApplication2
{
class Dentaku
{
public int tasizan(int a, int b)
{
int c;
c = a + b;
return c;
}
}
class Program
{
static void Main(string[] args)
{
Dentaku Dentaku1 = new Dentaku();
int a = 1;
int b = 2;
int c;
c = Dentaku1.tasizan(a, b);
Console.WriteLine(a + "+" + b + "=" + c );
}
}
}
JAVAの記述をそのまま書いただけ。
結局のところオブジェクト指向って
クラス別で記述。
それを使いたい記述。主に static void main()で使用するだけ。
ってことかな。
ただ、メソッドの記述がものによっては、メインクラスの後に記述されていたりするのでその辺が微妙。
メソッドの記述だけど
public int tasizan(int a, int b)
{
int c;
c = a + b;
return c;
}
で、メソッドの戻り値は int 型。
んで、int 型のc にreturn c で返す。
なんかすっきりしないのは、このメソッドっていうのが、
変数なのか、クラスなのか、処理順はどうなのかっていう疑問はあるけど
駄文書いてけば自ずと理解できるだろう。
この処理だと
メソッドの作成(int a , int b)
に引数を指定
main メソッドで int a ,b 変数を宣言して、
dentaku クラスのtasizan メソッドに渡した。
でもこれ、c = になってるから
メソッドの戻り値は int 型。
んで、int 型のc にreturn c で返す。
はあくまで一時的なデータ置き場である。。
例えば
public int tasizan(int a, int b)
{
int d;
d = a + b;
return d;
}
に変更しても問題なく動く。
更に、
public int tasizan(int e, int f)
{
int d;
d = e + f;
return d;
}
引数の値をint e, int fにしても
問題なく処理はされた。
これを見ればわかるが、結局メソッドでの変数は独立しているみたいだ。
参考書はこの辺をまとめてしまうので、
そういった点だけが不満だー
return がないとやっぱりダメ。
戻り値が読み取ってるのは、 メソッド内の 処理後の変数ではないのかー。
なんとなくきになるのは別にreturn なくても、処理の関係上 計算をした変数にはデータは入っているはず。
あーなるほど
return は計算した c = a + bのcを
戻り値として送ってるのか。
だから
c = 3 + 3
C = 6
このままだと、メソッド内の変数の値でしか無い
return c
→戻り値として,メソッドに渡される。
public int tasizan(int e, int f)
{
int d;
d = e + f;
int z = 21;
return z;
}
やっぱりなー。
この状態にすれば、21が出た。
21を戻り値として返してるみたいだねー。