实验四 (1):定义一个形状类(Shape)方法:计算周长,计算面积
(1)定义一个形状类(Shape)方法:计算周长,计算面积
子类:
矩形类(Rectangle) :额外的方法:differ() 计算长宽差
圆形类(Circle)
三角形类(Triangle)
正方形类(Square) 矩形的子类
生成几个不同的形状对象,放在一个Shape类型的数组里,分别求每个形状的周长和面积。如果形状对象是一个矩形,且不是正方形,则计算长宽差。
package com.tiger.practice;
class Shape {
public double length(){
return ;
}
public double area() {
return ;
}
}
class Rectangle extends Shape {
private double width;
private double height;
public Rectangle(double height,double width) {
this.height=height;
this.width = width;
}
@Override
public double length() {
// TODO Auto-generated method stub
return *(width+height);
}
@Override
public double area() {
// TODO Auto-generated method stub
return width*height;
}
public double differ() {
return Math.abs(height-width);
}
}
class Square extends Rectangle {
public double edge;
public Square(double edge) {
super(edge,edge);
setEdge(edge);
// TODO Auto-generated constructor stub
}
public double getEdge() {
return edge;
}
public void setEdge(double edge) {
this.edge = edge;
}
}
class Triangle extends Shape {
private double a;
private double b;
private double c;
public Triangle(double a,double b,double c) {
this.a= a;
this.b = b;
this.c = c;
}
@Override
public double length() {
// TODO Auto-generated method stub
return a+b+c;
}
@Override
public double area() {
double p= (a+b+c)/;
// TODO Auto-generated method stub
return Math.sqrt(p*(p-a)*(p-b)*(p-c));
}
}
class circle extends Shape{
private double r;
public circle(double r){
this.r = r;
}
public double length(){
return 3.1415**r;
}
public double area(){
return 3.1415*r*r;
}
}
public class shapes {
/**
* @param args
*/
public static void main(String[] args) {
// TODO Auto-generated method stub
Shape[] shapes= {
new Rectangle(,),
new circle(),
new Square(),
new Triangle(, , )
};
for(int i=;i<shapes.length;i++) {
double length=shapes[i].length();
double area=shapes[i].area();
if(shapes[i]instanceof circle) {
System.out.println("Shape("+(i+)+"): "+
"length"+String.format("%.4f", length)+",area"
+String.format("%.4f", area));
}
else {
System.out.println("Shape("+(i+)+"): "+
"length"+length+",area"+area);
if(shapes[i]instanceof Rectangle) {
Rectangle r=(Rectangle)shapes[i];
System.out.println("长宽差是: "+r.differ());
}
}
}
}
}
实验四 (1):定义一个形状类(Shape)方法:计算周长,计算面积的更多相关文章
- 定义一个Rectangle类,该类提供getLength和getWidth方法。
import java.util.Comparator; /** * 定义一个Rectangle类,该类提供getLength和getWidth方法.利用图1-18中的findMax例程编写 * 一种 ...
- java定义一个Circle类,包含一个double型的radius属性代表圆的半径,一个findArea()方法返回圆的面积
需求如下:(1)定义一个Circle类,包含一个double型的radius属性代表圆的半径,一个findArea()方法返回圆的面积. (2)定义一个类PassObject,在类中定义一个方法pri ...
- 定义一个Person类,其中包括:1.定义属性:姓名、年龄、民族作为成员变量。定义静态成员变量:人数2.定义构造方法:对成员变量进行初始化。3.定义多个方法:分别显示相应的属性值,例如getName(){System.out.print("名称="+name+";"); }4.定义一个方法“成长”:实现年龄的增加,每执行一次年龄增加1
题目显示不全,完整题目描述: (1)定义一个Person类,其中包括:1.定义属性:姓名:年龄:民族作为成员变量.定义静态成员变量:人数2.定义构造方法:对成员变量进行初始化.3.定义多个方法:分别显 ...
- Java初学者作业——定义一个计算器类, 实现计算器类中加、 减、 乘、 除的运算方法, 每个方法能够接收2个参数。
返回本章节 返回作业目录 需求说明: 定义一个计算器类, 实现计算器类中加. 减. 乘. 除的运算方法, 每个方法能够接收2个参数. 实现思路: 定义计算器类. 定义计算器类中加.减.乘.除的方法. ...
- 34 异常机制 异常体系结构 Java把异常当做对象来处理 并定义一个基类java.lang.Throwable作为所有异常的超类 Error Exception
异常体系结构 概念 Java把异常当做对象来处理,并定义一个基类java.lang.Throwable作为所有异常的超类. 在Java API中已经定义了许多异常类,这些异常类分为两大类,错误Erro ...
- PHP加载另一个文件类的方法
加载另一个文件类的方法 当前文件下有a.php 和b.php,想要在class b中引入class a <?php class a { public $name = ' ...
- Eclipse快速生成一个JavaBean类的方法
原文: https://jingyan.baidu.com/article/948f5924156866d80ff5f921.html Eclipse快速生成一个JavaBean类的方法 听语音 | ...
- c++ 一个h文件里面定义一个主类,然后定义多个子类
最近遇到一个函数,在调用的时候出现问题,记录下实现过程. #ifndef MLS_DEFORMATION_H #define MLS_DEFORMATION_H #include <vector ...
- C++:如何正确的定义一个接口类
C++中如何定义接口类?首先给接口类下了定义:接口类应该是只提供方法声明,而自身不提供方法定义的抽象类.接口类自身不能实例化,接口类的方法定义/实现只能由接口类的子类来完成. 而对于C++,其接口类一 ...
随机推荐
- linux中的find命令常用场景
1.find file.txt 在当前目录下,查找file.txt是否存在 2.find . -name file.txt 在当前目录下,递归查找file.txt文件 ...
- Pandas系列(五)-分类数据处理
内容目录 1. 创建对象 2. 常用操作 3. 内存使用量的陷阱 一.创建对象 1.基本概念:分类数据直白来说就是取值为有限的,或者说是固定数量的可能值.例如:性别.血型. 2.创建分类数据:这里以血 ...
- golang net包使用
创建简单的响应服务器 package main import ( "net/http" ) func handlerFunc(w http.ResponseWriter, r *h ...
- MyBatis集成到Spring时配置MapperScannerConfigurer出错
问题描述 在web项目中同时集成了spring mvc和mybatis. 将jdbc配置参数独立在外部配置文件中,然后通过<context:property-placeholder>引入. ...
- 五十二、linux 编程——网络介绍
52.1 网络介绍 使用远程资源 共享信息.程序和数据 分布处理 52.1.1 协议的概念 计算机网络中实现通信必须有一些约定,如对速率.传输代码.代码结构.传输控制步骤和出错控制等约定,这些约定即被 ...
- Element ui select同时获取value和label的值
代码如下: <el-form-item v-if="isMD" label="业务员名称"> <el-select v-model=" ...
- Contest2156 - 2019-3-7 高一noip基础知识点 测试2 题解版
传送门 预计得分:100+70+100+50=320 实际得分100+63+77+30=270 Ctrl_C+Ctrl_V时不要粘贴翻译的,直接粘原文, In a single line of the ...
- UOJ #109「APIO2013」TASKSAUTHOR
貌似是最入门的题答题 刚好我就是入门选手 就这样吧 UOJ #109 题意 太热了不讲了 $ Solution$ 第一个点:$ 105$个数字卡掉$ Floyd$ 直接$101$个点无出边一次询问就好 ...
- Android app中的so库和CPU架构
一.android目前有几种cpu架构? 早期的Android系统几乎只支持ARMv5的CPU架构,目前支持七种CPU架构:ARMv5,ARMv7 (从2010年起),x86 (从2011年起),MI ...
- [转载]关于在Linux下上传代码至Github
刚开始使用Github没多长时间,所以很多地方不太熟练,看到阿里云上有一篇文章写得不错,故转载过来. 转载自:https://www.aliyun.com/jiaocheng/122729.html ...