import java.util.ArrayList;
public class Onigiri extends Object{
static int count = 0 ; // Onigiri.count = 9 ;
static ArrayList<Onigiri> list;
static {
list = new ArrayList<Onigiri>();
}
static private Onigiri onlyone;
static Onigiri getOnigiri(){
if (onlyone != null) return onlyone;
else {
onlyone = new Onigiri();
return onlyone;
}
}
// フィールド/メンバ=データの詳細
String gu ; /* おにぎりの具名 */
boolean withNori; /* 海苔がついているか? true / false */
int shape ; /* 0:丸, 1:俵型, 3:三角形 */
//コンストラクタ=データ製造機
private Onigiri() {
gu = "無し(塩むすび)";
withNori = false;
shape = 3;
count++ ; list.add(this);
}
public Onigiri(String _gu) {
this();
gu = _gu;
}
public Onigiri(String gu, int shape) {
this(gu);
this.shape = shape;
}
public Onigiri(String gu, boolean wnori) {
this(gu);
withNori = wnori;
}
public Onigiri(String gu, boolean wnori, int shape) {
this(gu, wnori);
this.shape = shape;
}
//メソッドの役割:(1) データの修正・更新をする (2) データに関する情報を出力 (3) データに関する処理
public void setWithNori(boolean wnori) {
withNori = wnori;
}
public String toString() { // オーバーライド
String str = "具は "+gu+" で,";
switch(shape){
case 0:
str = str+"丸型で,";
break;
case 1:
str = str+"俵型で,";
break;
case 3:
str = str+"三角形で,";
break;
}
str = str + (withNori ? "海苔付き" : "海苔なし");
return str;
}
public static void main(String[] args) {
//基本のおにぎりをつくる
//コンストラクタを呼び出し,インスタンスを生成
Onigiri siomusubi = new Onigiri();
System.out.println("siomusubi = " + siomusubi.toString());
Onigiri ume = new Onigiri("梅", true);
System.out.println("ume = " + ume.toString());
Onigiri marusake = new Onigiri("鮭", 0);
System.out.println("marusake = " + marusake.toString());
Onigiri mentai = new Onigiri("明太子", true, 1);
System.out.println("mentai = " + mentai.toString());
Onigiri okaka = new Onigiri("おかか", false, 3);
System.out.println("okaka = " + okaka.toString() );
System.out.println(Onigiri.count);
for(Onigiri oni : list){
System.out.println(oni.toString());
}
YakiOnigiri yaki = new YakiOnigiri();
yaki.setWithNori(true);
System.out.println(yaki.getClass().getName());
System.out.println(yaki.toString());
}
}
class YakiOnigiri extends Onigiri {
boolean koge = false;
public String toString(){
String mes = super.toString();
String kogemes = (koge)? "焦げあり" : "焦げなし";
return mes+kogemes;
}
}
class NikumakiOnigiri extends Onigiri {
String niku;
}