詳しくは公式マニュアルをお読みください。
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("数字じゃない!"); } } }