题目描述:
创建一个直角三角形类(regular triangle)RTriangle类,实现下列接口IShape。两条直角边长作为RTriangle类的私有成员,类中包含参数为直角边的构造方法。
interface IShape {// 接口
public abstract double getArea(); // 抽象方法 求面积
public abstract double getPerimeter(); // 抽象方法 求周长
}
###直角三角形类的定义:
直角三角形类的构造函数原型如下:
RTriangle(double a, double b);
其中 a
和 b
都是直角三角形的两条直角边。
裁判测试程序样例:
import java.util.Scanner;
import java.text.DecimalFormat;
interface IShape {
public abstract double getArea();
public abstract double getPerimeter();
}
/*你写的代码将嵌入到这里*/
public class Main {
public static void main(String[] args) {
DecimalFormat d = new DecimalFormat("#.####");
Scanner input = new Scanner(System.in);
double a = input.nextDouble();
double b = input.nextDouble();
IShape r = new RTriangle(a, b);
System.out.println(d.format(r.getArea()));
System.out.println(d.format(r.getPerimeter()));
input.close();
}
}
输入样例:
3.1 4.2
输出样例:
6.51
12.5202
设计重点:
最容易出现的错误依然是构造方法不能添加任何前缀,其次调用接口需要用implements关键字。
IShape r = new RTriangle(a, b); 一种创建带有接口的对象的方式
最终代码:
class RTriangle implements IShape {
double A;
double B;
//构造方法
RTriangle(double A, double B) {
this.A = A;
this.B = B;
}
public double getArea() {
double S = A * B / 2;
return S;
}
public double getPerimeter() {
double C = A + B + Math.pow((A * A + B * B), 0.5);
return C;
}
}
总结:掌握基础的接口的实现。