问题:
设计一个程序,其中含有一个接口Shape(形状),其中有求形状的面积的方法area()。再定义三个实现接口的类:三角型类、矩形类和圆类。在主方法中创建Shape类型的一维数组,它有三个元素,放置三个对象,分别表示三角形、矩形和圆,然后利用循环输出三个图形的面积。
( 注:三角形面积s=Math.sqrt(p*(p-a)*(p-b)*(p-c)),a,b,c为三条边,p=(a+b+c)/2 )
代码:
(1)接口Shape:定义了求形状面积的方法getArea()
package com.company;
import java.util.Scanner;
interface Shape
{
public abstract double getArea(double a,double b);
}
(2) 三角形类、长方形类、圆类都继承接口Shape,实现了接口的getArea()方法
class Triangle implements Shape{
private double p;
public double getArea(double a,double b,double c){
p=(a+b+c)/2;
return Math.sqrt(p*(p-a)*(p-b)*(p-c));
}
}
class Rectangle implements Shape{
public double getArea(double a,double b,double c){
return a*b;
}
}
class Circle implements Shape{
public double getArea(double a,double b,double c){
return a*a*Math.PI;
}
}
(3)在主方法中获取三角形的三个边a、b、c(其中长方形的边为a、b,圆的半径为a),然后创建Shape类型的一维数组s,它有三个元素,放置三个对象,分别表示三角形、矩形和圆,然后利用for循环输出三个图形的面积。
public class Main {
public static void main(String[] args) {
Scanner input=new Scanner(System.in);
double a=input.nextDouble();
double b=input.nextDouble();
double c=input.nextDouble();
Shape [] s=new Shape[3];
s[0]=new Triangle();
s[1]=new Rectangle();
s[2]=new Circle();
s[0].getArea(a, b,c);
for (int i=0;i<3;i++)
{
System.out.println(s[i].getArea(a,b,c));
}
}
}
运行结果: