詳しくは公式マニュアルをお読みください。
Javaって、こんな風にも書ける、とか、こうとも言う、とか、色々有るので、
以下は雰囲気だけのざっくりとした説明です。
作成中です。ミス有ったら後免。
class クラス名 extends 基にするクラス名
//Menu.java (3c) 2016.10.13 by Ryn
public class Menu {
protected String name;
protected int tanka;
public Menu(String name, int tanka) { // コンストラクタ
this.name = name;
this.tanka = tanka;
}
protected float calcPayment(int suryo) {
return tanka * suryo * (float)1.08;
}
public void dispData(int suryo) {
System.out.print(String.format("%-20s @%,5d円 %4d個",name, tanka, suryo));
System.out.println(String.format(" %,8d円(税込)", (int)calcPayment(suryo)));
System.out.println();
}
}
BoxMenuクラス。
// BoxMenu.java (3c) 2016.10.13 by Ryn
final public class BoxMenu extends Menu{ // サブクラス
int boxTanka;
final private int kosu = 10;
final private int hakodai = 100;
public BoxMenu(String name, int tanka) { // コンストラクタ
super(name, tanka);
boxTanka = tanka * kosu + hakodai;
}
protected float calcPayment(int box) { // オーバーライド
return boxTanka * box * (float)1.08;
}
public void dispData(int suryo) { // オーバーライド
int box = suryo / kosu;
int hasu = suryo % kosu;
// 箱詰めの分
System.out.print(String.format("%-20s @%,5d円 %4d個",
name + "[BOX]", boxTanka, box));
System.out.println(String.format(" %,8d円(箱代・税込)",
(int)calcPayment(box)));
// 端数の分
System.out.print(String.format("%-20s @%,5d円 %4d個",
name, tanka, hasu));
System.out.println(String.format(" %,8d円(税込)",
(int)super.calcPayment(hasu)));
System.out.println();
}
}
//Sweets.java (3c) 2016.10.13 by Ryn
public class Sweets {
public static void main(String[] args) {
Menu a[] = new Menu[4];
a[0] = new Menu("饅頭", 350);
a[1] = new BoxMenu("饅頭", 350);
a[2] = new Menu("羊羹", 500);
a[3] = new BoxMenu("羊羹", 500);
try{
if(args.length == 1){
int suryo = Integer.parseInt(args[0]);
for(int i = 0; i < a.length; i++)
a[i].dispData(suryo);
}
else
System.out.println("引数エラー!");
}
catch(NumberFormatException e2){
System.out.println("数字じゃない!");
}
}
}