第2关: 在椭圆类中实现2个接口
任务描述
本关任务: 参照以下案例,定义一个Ellipse类,实现接口Area和Perimeter.并在主函数中定义 Ellipse类的对象,输出该对象的面积和周长。 说明:设椭圆的长半轴和短半轴的长分别用 a 和b表示,则 周长:L=2πb+4(a-b) 面积:A=πab
相关知识
为了完成本关任务,你需要掌握: 1.接口的定义,2.接口的实现,3.类和对象的定义和使用。
基于接口的矩形类
//声明(定义)接口 Area interface Area { public abstract double area(); //抽象方法area():计算面积 } //声明(定义)接口 Perimeter interface Perimeter { public abstract double perimeter(); //抽象方法perimeter():计算周长 } //定义矩形类,实现接口Area、Perimeter class Rectangle implements Area,Perimeter{
private double width; private double length; //构造函数 public Rectangle(double wid, double len) { width=wid; length=len; } //实现Area接口中的抽象方法area() public double area() { return widthlength; } //实现Perimeter接口中的抽象方法perimeter() @Override public double perimeter() { return 2*(width+length);
} //显示矩形对象的信息 public void display() { System.out.printf("矩形的宽度:%.2f,长度:%.2f,",this.width,this.length); System.out.printf("面积:%.2f,周长:%.2f\n",area(),perimeter()); } } 运行结果: 矩形的宽度:3.00,长度:6.00,面积:18.00,周长:18.00
编程要求
根据提示,在右侧编辑器补充代码.
测试说明
平台会对你编写的代码进行测试:
测试输入: 6 4; 预期输出: 椭圆的长半轴:6.00,短半轴:4.00,面积:75.36,周长:33.12
提示: 输出结果中的标点符号均为英文半角
/* 请在下面标注【】的位置补充代码。
*/
import java.util.Scanner;
//定义接口 Area,包含抽象方法area():计算面积
interface Area {
public abstract double area();
}
//定义接口 Perimeter,包含抽象方法perimeter():计算周长
interface Perimeter {
public abstract double perimeter();
}
//定义椭圆类,实现接口Area、Perimeter
class Ellipse implements Area,Perimeter {
private double longAxis; //长半轴
private double shortAxis; //短半轴
//构造方法
public Ellipse(double longAxis, double shortAxis)
{
this.longAxis= longAxis;
this.shortAxis= shortAxis;
}
//重写(或实现)Area接口中的抽象方法area()
@Override
public double area(){
return(3.14*longAxis*shortAxis);
}
//实现Perimeter接口中的抽象方法perimeter()
@Override
public double perimeter(){
return 2*3.14*shortAxis+4*(longAxis-shortAxis);
}
//显示椭圆对象的信息
public void display()
{
System.out.printf("椭圆的长半轴:%.2f,短半轴:%.2f",this.longAxis,this.shortAxis);
System.out.printf(",面积:%.2f,周长:%.2f\n",area(),perimeter());
}
}
//测试类
public class EllipseTest {
public static void main(String[] args) {
Scanner sc = new Scanner(System.in);
double a,b;
a = sc.nextDouble(); //长半轴
b = sc.nextDouble(); //短半轴
Ellipse ellipse = new Ellipse(a,b);
ellipse.display();
}
}