在Java编程语言中,抽象类是一种特殊的类,它不能被实例化,但可以作为其他类的基类。在这个场景中,我们使用抽象类来定义一个"形状类",该类包含计算周长和面积的通用方法。这允许我们创建一个统一的接口,使得所有形状都遵循相同的规范。 我们可以定义一个名为`Shape`的抽象类,它包含两个抽象方法:`getPerimeter()`用于计算周长,`getArea()`用于计算面积。这两个方法应该返回`double`类型的值,因为周长和面积可能不是整数。抽象方法没有具体实现,需要在子类中进行定义。 ```java public abstract class Shape { public abstract double getPerimeter(); public abstract double getArea(); } ``` 接着,我们将创建三个具体形状的类:`Rectangle`(矩形)、`Triangle`(三角形)和`Circle`(圆形),它们都将继承自`Shape`类。每个子类都需要实现`getPerimeter()`和`getArea()`方法,根据各自的几何特性来计算。 对于`Rectangle`类,我们需要两个属性:`length`和`width`,周长是`2 * (length + width)`,面积是`length * width`。 ```java public class Rectangle extends Shape { private double length; private double width; public Rectangle(double length, double width) { this.length = length; this.width = width; } @Override public double getPerimeter() { return 2 * (length + width); } @Override public double getArea() { return length * width; } } ``` 对于`Triangle`类,假设它是一个直角三角形,我们需要`base`和`height`,周长是`base + height + Math.sqrt(base*base + height*height)`,面积是`0.5 * base * height`。 ```java public class Triangle extends Shape { private double base; private double height; public Triangle(double base, double height) { this.base = base; this.height = height; } @Override public double getPerimeter() { return base + height + Math.sqrt(base * base + height * height); } @Override public double getArea() { return 0.5 * base * height; } } ``` 对于`Circle`类,我们需要半径`radius`,周长是`2 * Math.PI * radius`,面积是`Math.PI * radius * radius`。 ```java public class Circle extends Shape { private double radius; public Circle(double radius) { this.radius = radius; } @Override public double getPerimeter() { return 2 * Math.PI * radius; } @Override public double getArea() { return Math.PI * radius * radius; } } ``` 我们需要一个测试类`TestShapes`来创建这些形状对象并打印它们的周长和面积。 ```java public class TestShapes { public static void main(String[] args) { Shape rectangle = new Rectangle(5, 4); System.out.println("矩形的周长: " + rectangle.getPerimeter()); System.out.println("矩形的面积: " + rectangle.getArea()); Shape triangle = new Triangle(3, 4); System.out.println("三角形的周长: " + triangle.getPerimeter()); System.out.println("三角形的面积: " + triangle.getArea()); Shape circle = new Circle(7); System.out.println("圆形的周长: " + circle.getPerimeter()); System.out.println("圆形的面积: " + circle.getArea()); } } ``` 运行`TestShapes`类,我们将看到不同形状的周长和面积的输出。 通过这个例子,我们可以看到Java中的继承和抽象类是如何帮助我们构建模块化和可扩展的代码的。每个形状类都有自己的特定属性和计算方法,但它们都继承自`Shape`类,共享相同的行为接口。这种设计模式有助于提高代码的复用性和可维护性。































- 1


- 粉丝: 45
我的内容管理 展开
我的资源 快来上传第一个资源
我的收益
登录查看自己的收益我的积分 登录查看自己的积分
我的C币 登录后查看C币余额
我的收藏
我的下载
下载帮助


最新资源
- 安利网站诊断书.docx
- resolume-VJ软件中文说明书.doc
- IT软件工程师年终汇报.docx
- matlab第二章.ppt
- Flash动画课程设计报告范文.doc
- Excel数据表格中的分分合合【会计实务操作教程】.pptx
- 百扬大厦项目管理策划.doc
- 2022自动化专业毕业生求职信_.docx
- 2023年大学毕业生IBM实习总结.docx
- iResearch招商银行网络生活指数报告.ppt
- Excel会计与财务管理—理论、方案暨模型(第二版)整套课件电子教案课件.pptx
- PMP认证答疑.doc
- 2022网络直播教学心得体会.docx
- 2023年广西三类人员B证继续教育网络学习试题.doc
- NTS新一代教育信息化应用建设整体方案基教样本.docx
- springboot基于Java的车辆维修管理系统(编号:27942537).zip


