クラスの属性定義
public String xxxx {set; get;}
public String xxxx {get{ return xxxx;}}
public List<String> xxxx {private set; get{
if (xxxx==null){
xxxx = new List<String>();
}
return xxxx;
};}
インターフェースの例
インターフェースにはプロパティは定義できない
public interface ResponseData {
//メソッドにpublicは付けない
Map<String, Object> getResultMap();
}
継承元クラス
//インスタンス化しないクラスでは abstractキーワードを付ける
public abstract class XXX_XXXXBase {
....
//private/protected/publicの考え方はjavaと同じ
private xxxx {set; get;}
protected XXXX {get{
return xxxx;
}}
public xxxx {protected set; get;}
}
//インスタンス化するクラスの場合はvirtualキーワードを付ける
public virtual class XXX_XXXXCtrl {
....
}
継承先のクラス
//javaと同じ extneds
public with sharing class XXXX extends XXX_XXXXBase{
.....
//継承先のクラスではプロパティはthisで参照
this.xxxx = xxxx;
//サブクラス側でメソッドをオーバーライドしたい場合は overrideキーワードを付ける
public override string getXXX() {
//親メソッドを呼ぶには super();
super();
.....
}
}
Iteratorクラスの実装
public with sharing class CsvIterator implements Iterator<List<String>>, Iterable<List<String>> {
private List<List<String>> data; //table data for csv
private Integer curpos = 0;
/*
* constructor
*/
public CsvIterator(List<List<String>> data){
this.data = data;
}
public Boolean hasNext() {
return this.curpos < data.size() ? true : false;
}
public List<String> next() {
return data[curpos++];
}
public Iterator<List<String>> Iterator(){
return this;
}
}