// 継承によって，ロジックの集約化

import java.lang.Math;

class Takakkei {

    double[] hen;
    public double menseki(){
        return 0.0;
    };

    public double mawari(){
        double xm = 0;
        for(int i=0;i<hen.length;i++){
            xm = xm + hen[i];
        }
        return xm;
    };
}

class TyokakuSannkakkei extends Takakkei{

    private double a;
    private double b;

    public TyokakuSannkakkei (double xa, double xb){
        a = xa;
        b = xb;
        hen = new double[3];
        hen[0] = a;
        hen[1] = b;
        hen[2] = (double)Math.sqrt(a*a+b*b);
    }
    public String toString(){
        return  "この直角三角形の直角を挟む辺は，" +  a + ", " + b;
    }

    public double menseki(){
        return (a*b)/2;
    }
}

class Tyouhoukei  extends Takakkei{

    private double a;
    private double b;

    public Tyouhoukei (double xa, double xb){
        a = xa;
        b = xb;
        hen = new double[4];
        hen[0] = a;
        hen[1] = b;
        hen[2] = a;
        hen[3] = b;
    }

    public String toString(){
        return "この長方形の辺は " + a + ", " + b;
    }

    public double menseki(){ // public float menseki() だとコンパイルエラー
        return a*b;
    }
}

public class xExtd02 {
    public static void main(String xargs[]){

        TyokakuSannkakkei tyosan  = new TyokakuSannkakkei(3.0, 4.0);
        Tyouhoukei        tyou    = new Tyouhoukei(6.0, 7.0);

        System.out.print(tyosan);
        System.out.print  (" 周囲：" + tyosan.mawari());
        System.out.println(" 面積：" + tyosan.menseki());

        System.out.print(tyou);
        System.out.print  (" 周囲：" + tyou.mawari()); // × tyou.syuui()
        System.out.println(" 面積：" + tyou.menseki());
    }
}

