定义一个Shape接口,并定义抽象方法周长和面积,圆形类和长方形类分别去实现这个接口。最后在测试类里计算半径为5.6的周长和面积;长6.1,宽6.3的长方形的周长和面积
1. 测试类用Main代替
public class Main {
public static void main(String[] args) {
// TODO Auto-generated method stub
// 最后在测试类里计算半径为5.6的周长和面积;长6.1,宽6.3的长方形的周长和面积
Circular circular = new Circular(5.6);
System.out.println("圆形的周长:" + circular.calcPerimeter());
System.out.println("圆形的面积:" + circular.calcArea());
Rectangle rectangle = new Rectangle(6.1,6.3);
System.out.println("长方形的周长:" + rectangle.calcPerimeter());
System.out.println("长方形的面积:" + rectangle.calcArea());
}
}
2. 编写Shape接口
public interface Shape {
// 计算面积
double calcArea();
// 计算周长
double calcPerimeter();
}
3. 编写实现类圆形和长方形
public class Circular implements Shape{
private double radius;
@Override
public String toString() {
return "Circular [radius=" + radius + "]";
}
public double getRadius() {
return radius;
}
public void setRadius(double radius) {
this.radius = radius;
}
public Circular(double radius) {
// TODO Auto-generated constructor stub
this.radius = radius;
}
@Override
public double calcArea() {
// TODO Auto-generated method stub
// 面积计算公式
return Math.PI * this.radius * this.radius;
}
@Override
public double calcPerimeter() {
// TODO Auto-generated method stub
// 周长计算公式
return 2 * Math.PI * this.radius;
}
}
public class Rectangle implements Shape{
private double length;
private double wide;
public Rectangle(double length,double wide) {
// TODO Auto-generated constructor stub
this.length = length;
this.wide = wide;
}
@Override
public String toString() {
return "Rectangle [length=" + length + ", wide=" + wide + "]";
}
public double getLength() {
return length;
}
public void setLength(double length) {
this.length = length;
}
public double getWide() {
return wide;
}
public void setWide(double wide) {
this.wide = wide;
}
@Override
public double calcArea() {
// TODO Auto-generated method stub
// 面积计算公式
return this.length * this.wide;
}
@Override
public double calcPerimeter() {
// TODO Auto-generated method stub
// 周长计算公式
return 2 * (this.length + this.wide);
}
}
大体的目录结构:
public interface Shape {
double getPerimeter(double x,double y);
double getArea(double x,double y);
}
public class Circle implements Shape {
/**
* 获取周长
*
* @param x 半径
* @param y 空
* @return
*/
@Override
public double getPerimeter(double x, double y) {
return 2 * Math.PI * x;
}
/**
* 获取面积
*
* @param x 半径
* @param y 空
* @return
*/
@Override
public double getArea(double x, double y) {
return Math.PI * Math.pow(x, 2);
}
}
/**
* 矩形
*/
public class Rect implements Shape{
/**
* 周长
* @param x 长
* @param y 宽
* @return
*/
@Override
public double getPerimeter(double x, double y) {
return (x+y)*2;
}
/**
* 面积
* @param x 长
* @param y 宽
* @return
*/
@Override
public double getArea(double x, double y) {
return x*y;
}
}
@Test
fun test2(){
var circle:Shape=Circle()
println(circle.getPerimeter(1.0,0.0))
println(circle.getArea(1.0,0.0))
var rect:Shape=Rect()
println(rect.getPerimeter(1.0,2.0))
println(rect.getArea(1.0,2.0))
}
public class Test {
public static void main(String[] args) {
Shape circle = new Circle(5.6);
System.out.println("圆的面积:" + circle.getArea());
System.out.println("圆的周长:" + circle.getPerimeter());
Shape rect = new Rectangle(6.1,6.3);
System.out.println("矩形的面积:" + rect.getArea());
System.out.println("矩形的周长:" + rect.getPerimeter());
}
}
interface Shape{
double getArea();
double getPerimeter();
}
class Circle implements Shape{
double radius; //半径
public Circle() {}
public Circle(double radius) {
this.radius = radius;
}
@Override
public double getArea() {
return 3.14*radius*radius;
}
@Override
public double getPerimeter() {
return 2*radius*3.14;
}
}
class Rectangle implements Shape{
private double height;
private double width;
public Rectangle() {}
public Rectangle(double height,double width) {
this.height = height;
this.width = width;
}
@Override
public double getArea() {
return width*height;
}
@Override
public double getPerimeter() {
return 2*height*width;
}
}
有什么不懂的可以询问哟,求一个采纳~
您好,我是有问必答小助手,您的问题已经有小伙伴解答了,您看下是否解决,可以追评进行沟通哦~
如果有您比较满意的答案 / 帮您提供解决思路的答案,可以点击【采纳】按钮,给回答的小伙伴一些鼓励哦~~
ps:问答VIP仅需29元,即可享受5次/月 有问必答服务,了解详情>>>https://vip.csdn.net/askvip?utm_source=1146287632
非常感谢您使用有问必答服务,为了后续更快速的帮您解决问题,现诚邀您参与有问必答体验反馈。您的建议将会运用到我们的产品优化中,希望能得到您的支持与协助!
速戳参与调研>>>https://t.csdnimg.cn/Kf0y
好