对于每个几何图形而言,都有一些共同的属性,如名字、面积等,而其计算面积的方法却各不相同。为了简化开发,请编写程序,定义一个超类来实现输入名字的方法,并使用抽象方法来计算面积。

思路分析:

  1. 所谓超类就是抽象父类,该抽象类中有两个方法,分别用来获取图形的名称和图形的面积。要获得图形的名称,通过类的getClass().getSimpleName()方法可以实现;要获得图形的面积,因为计算面积的方法各不相同,所以该方法是个抽象方法。
  2. 定义一个子类表示圆形,圆形的半径通过构造方法获得,圆形的面积通过重写超类中的抽象方法获得,其中圆周率可以用Math.PI表示。
  3. 其他类同步骤2,半径、长、宽等参数通过构造方法获得,这样才省事嘛。

代码如下:

public abstract class Shape {
public String getName() {//获得图形的名称
return this.getClass().getSimpleName();
}
public abstract double getArea();//获得图形的面积
}
public class Circle extends Shape {
private double radius;
public Circle(double radius) {//获得圆形的半径
this.radius = radius;
}
@Override
public double getArea() {//计算圆形的面积
return Math.PI * Math.pow(radius, 2);
}
}
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 getArea() {//计算矩形的面积
return length * width;
}
}
public class Test {
public static void main(String[] args) {
Circle circle = new Circle(1);//创建圆形对象并将半径设置成1
System.out.println("图形的名称是:" + circle.getName());
System.out.println("图形的面积是:" + circle.getArea());
Rectangle rectangle = new Rectangle(1, 1);//创建矩形对象并将长和宽设置成1
System.out.println("图形的名称是:" + rectangle.getName());
System.out.println("图形的面积是:" + rectangle.getArea());
}
}

  效果如图:

最新文章

  1. 向 div 元素添加圆角边框:
  2. 从 datetime2 数据类型到 datetime 数据类型的转换产生一个超出范围的值
  3. tornado 协程的实现原理个人理解;
  4. swift中文文档- 类型转换
  5. iOS 关于微信检测SDK应用的原理浅析
  6. 【HTML】Beginner1:TagsAttributesElements
  7. typecho路由机制详解
  8. Java中两种实现多线程方式的对比分析
  9. 如何在环境变量里配置tomcat
  10. (亲测)1分钟破解IDM权限,傻瓜都能学会的破解方法(番外篇:利用破解工具直接破解IDM)
  11. 【java集合框架源码剖析系列】java源码剖析之TreeSet
  12. python之使用 wkhtmltopdf 和 pdfkit 批量加载html生成pdf,适用于博客备份和官网文档打包
  13. test request&&response 代码实现
  14. spring aop 切面编程
  15. [redis] redis 命令
  16. java 系统属性
  17. unity 简单通用游戏模式设计
  18. soapUI工具使用方法、简介、接口测试
  19. hdu3037 lucas
  20. linux下mysql开启远程访问权限 防火墙开放3306端口

热门文章

  1. ansible 配置了端口在host文件但是还要走22 ip:60001 ansible_ssh_port=60001
  2. Java设计模式(1)工厂模式(Factory模式)
  3. 实现接口时@Override注解问题
  4. 第三百五十八节,Python分布式爬虫打造搜索引擎Scrapy精讲—将bloomfilter(布隆过滤器)集成到scrapy-redis中
  5. e606. Determining Which Component or Window Has the Focus
  6. Linux free命令使用及解析
  7. C#页面前台<%%><%#%><%=%>
  8. Xshell的常用命令
  9. u3d udp服务器
  10. Js参数值中含有单引号或双引号解决办法