getterとsetter
クラスファイルを作成したときクラス内の変数の設定および取得をすることがあります。
このとき、getterとsetterのようにしてクラス内部にメソッドを用意して
インスタンス化したクラスから値の設定および取得を行います。
クラスを作成します。
app→java→右クリック→New→Java Class
このサンプルではclsTestとします。
クラスを作ります。
public class clsTest {
private int mIntData = 0;
private String mStrData = "";
//コンストラクタ
clsTest()
{
//初期化
this.mIntData = 0;
this.mStrData = "";
}
//数字のケース
public void setIntData(int iData)
{
this.mIntData = iData;
}
public int getIntData()
{
return this.mIntData;
}
//文字列のケース
public void setStrData(String sData)
{
this.mStrData = sData;
}
public String getStrData()
{
return this.mStrData;
}
//アクセサメソッドに処理を実装するケース
public void setIntData2(int iData)
{
this.mIntData += iData;
}
public int getIntData2()
{
int iData = 0;
iData = this.mIntData;
if (iData < 10)
{
iData += 10;
}
return iData;
}
public void setStrData2(String sData)
{
this.mStrData += sData;
}
public String getStrData2()
{
String sData = "";
sData = this.mStrData;
if(sData.equals("aa"))
{
sData = "test";
}
return sData;
}
}
|
アクセサメソッドのように使っても実際は普通のメソッド形式となるため
普通の引数あり、なしおよび戻り値あり、なしのメソッドを作ることになります。
この作成したクラスを呼び元からインスタンス化して
値の設定および取得をすることで利用できます。
import android.support.v7.app.AppCompatActivity;
import android.os.Bundle;
//ログ出力の宣言
import android.util.Log;
public class MainActivity extends AppCompatActivity {
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
clsTest cls = new clsTest();
cls.setIntData(5);
Log.d("mIntData",String.valueOf(cls.getIntData()));
cls.setStrData("a");
Log.d("mStrData", cls.getStrData());
//アクセサメソッドに処理を実装するケース
cls.setIntData2(5);
Log.d("mIntData",String.valueOf(cls.getIntData2()));
cls.setStrData2("a");
Log.d("mStrData", cls.getStrData2());
//解放処理
cls= null;
//実行結果の例
/*
10-09 19:33:07.580 3651-3651/test.example.com.test21 D/mIntData: 5
10-09 19:33:07.580 3651-3651/test.example.com.test21 D/mStrData: a
10-09 19:33:07.580 3651-3651/test.example.com.test21 D/mIntData: 10
10-09 19:33:07.580 3651-3651/test.example.com.test21 D/mStrData: aa
*/
}
}
|
|
|