实验四 (1):定义一个形状类(Shape)方法:计算周长,计算面积

(1)定义一个形状类(Shape)方法:计算周长,计算面积
子类:
矩形类(Rectangle) :额外的方法:differ() 计算长宽差
圆形类(Circle)
三角形类(Triangle)
正方形类(Square) 矩形的子类
生成几个不同的形状对象,放在一个Shape类型的数组里,分别求每个形状的周长和面积。如果形状对象是一个矩形,且不是正方形,则计算长宽差。

  1 package com.tiger.practice;
  2
  3  class Shape {
  4
  5     public double length(){
  6         return 0;
  7     }
  8
  9     public double area() {
 10         return 0;
 11     }
 12 }
 13
 14  class Rectangle extends Shape {
 15
 16         private double width;
 17         private double height;
 18
 19
 20         public Rectangle(double height,double width) {
 21             this.height=height;
 22             this.width = width;
 23         }
 24
 25         @Override
 26         public double length() {
 27             // TODO Auto-generated method stub
 28             return 2*(width+height);
 29         }
 30
 31         @Override
 32         public double area() {
 33             // TODO Auto-generated method stub
 34             return width*height;
 35         }
 36
 37         public double differ() {
 38             return Math.abs(height-width);
 39         }
 40
 41     }
 42
 43  class Square extends Rectangle {
 44
 45      public double edge;
 46
 47      public Square(double edge) {
 48          super(edge,edge);
 49          setEdge(edge);
 50          // TODO Auto-generated constructor stub
 51      }
 52
 53      public double getEdge() {
 54          return edge;
 55      }
 56
 57      public void setEdge(double edge) {
 58          this.edge = edge;
 59      }
 60  }
 61
 62  class Triangle extends Shape {
 63         private double a;
 64         private double b;
 65         private double c;
 66
 67         public Triangle(double a,double b,double c) {
 68             this.a= a;
 69             this.b = b;
 70             this.c = c;
 71         }
 72
 73         @Override
 74         public double length() {
 75             // TODO Auto-generated method stub
 76             return a+b+c;
 77         }
 78
 79         @Override
 80         public double area() {
 81             double p= (a+b+c)/2;
 82             // TODO Auto-generated method stub
 83             return Math.sqrt(p*(p-a)*(p-b)*(p-c));
 84         }
 85     }
 86
 87  class circle extends Shape{
 88      private double r;
 89      public circle(double r){
 90          this.r = r;
 91      }
 92      public double length(){
 93          return 3.1415*2*r;
 94      }
 95      public double area(){
 96          return 3.1415*r*r;
 97      }
 98
 99  }
100
101 public class shapes {
102
103     /**
104      * @param args
105      */
106     public static void main(String[] args) {
107         // TODO Auto-generated method stub
108         Shape[] shapes= {
109                 new Rectangle(5,10),
110                 new circle(5),
111                 new Square(3),
112                 new Triangle(3, 4, 5)
113             };
114         for(int i=0;i<shapes.length;i++) {
115             double length=shapes[i].length();
116             double area=shapes[i].area();
117             if(shapes[i]instanceof circle) {
118                 System.out.println("Shape("+(i+1)+"): "+
119                         "length"+String.format("%.4f", length)+",area"
120                         +String.format("%.4f", area));
121             }
122             else {
123                         System.out.println("Shape("+(i+1)+"): "+
124                             "length"+length+",area"+area);
125                     if(shapes[i]instanceof Rectangle) {
126                         Rectangle r=(Rectangle)shapes[i];
127                         System.out.println("长宽差是:   "+r.differ());
128                     }
129             }
130         }
131     }
132
133 }

原文地址:https://www.cnblogs.com/CheeseIce/p/10690045.html

时间: 2024-10-13 08:49:21

实验四 (1):定义一个形状类(Shape)方法:计算周长,计算面积的相关文章

抽象一个形状类

Problem C: 抽象一个形状类 Description 阮宝同学期待着暑假来临,知道C++不好好复习麻烦不小.没有多态性,那就不叫面向对象,老师不划重点也能猜到.嘿嘿,自己做个经典题,怎么变题也不怕.老湿,再难的题还有木有? Input 输入四个数,前两个是矩形的长和宽,后两个是三角形的底边长和高. Output 分两行输出两个数,第一个是矩形的面积,第二个是三角形的面积. Sample Input 3.5 6.4 3.5 6.4 Sample Output 22.4 11.2 HINT

类的继承定义一个computer类在此基础上派生出两个子类(继承与多态绑定)

题目如下 定义一个计算机类(Computer),并在它的基础上派生出两个子类:台上机(Desktop)和便携机类(Notebook),在Computer中定义几个方法,并在子类Desktop和Notebook中覆盖这些方法.在main方法中利用对象类型转换将类Desktop和Notebook的对象分别赋值给Computer对象,并应用多态调用这些方法. 实验目的 (1)       理解继承的概念,掌握继承的语法. (2)       学习定义和使用子类. (3)       掌握继承过程中的方

java定义一个Circle类,包含一个double型的radius属性代表圆的半径,一个findArea()方法返回圆的面积

需求如下:(1)定义一个Circle类,包含一个double型的radius属性代表圆的半径,一个findArea()方法返回圆的面积. (2)定义一个类PassObject,在类中定义一个方法printAreas(),该方法的定义如下: public void printAreas(Cirlce c, int times) 在printAreas方法中打印输出1到time之间的每个整数半径值,以及对应的面积.例如,times为5,则输出半径1,2,3,4,5,以及对应的圆面积. 在main方法

定义一个长方形类,定义 求周长和面积的方法实例

/* 定义一个长方形类,定义 求周长和面积的方法, 然后定义一个测试了Test2,进行测试. 长方形的类: 成员变量: 长,宽 成员方法: 求周长:(长+宽)*2; 求面积:长*宽 注意: import必须出现在所有的class前面.*/ import java.util.Scanner; class ChangFangXing { //长方形的长 private int length; //长方形的宽 private int width; public ChangFangXing(){} //

定义一个Rectangle类,该类提供getLength和getWidth方法。

import java.util.Comparator; /** * 定义一个Rectangle类,该类提供getLength和getWidth方法.利用图1-18中的findMax例程编写 * 一种main方法,该方法创建一个Rectangle数组并首先找出依面积最大的Rectangle对象,然后 * 找出依周长最大的Rectangle对象. * @author wulei */public class RectangleTest { /** * 构造一个矩形 */ private int w

【OC复合题】之定义一个学生类,需要有姓名,年龄,考试成绩三个成员属性,创建5个对象,属性可以任意值。(Objective-C)

题目: 定义一个学生类,需要有姓名,年龄,考试成绩三个成员属性,创建5个对象,属性可以任意值.(Objective-C) 1)    不使用@property,手动编写他们的访问器方法(getter和setter),注意内存管理(手动管理内存) 2)    增加一个便利构造器(快速构造器) 3)    使用NSLog输出学生对象时,输出信息格式为:My Name Is XXX  Age Is XXX Score Is XXX 4)    对5个学生对象按照成绩->年龄->姓名优先级排序(成绩相

python全栈系列之---定义一个session类

首先:注意cookie中的get_cookie是返回字符串,而get_secure_cookie返回的是字节类型 #self.get_secure_cookie() #The decoded cookie value is returned as a byte string (unlike #`get_cookie`). md5加密获取的十六进制也是返回的字符串类型 import hashlib import time obj = hashlib.md5() obj.update(bytes(s

PHP加载另一个文件类的方法

加载另一个文件类的方法 当前文件下有a.php 和b.php,想要在class b中引入class a <?php    class a    {        public $name = 'zhouqi';        public function say()        {            echo 'hello '.$this->name;        }    } <?php    class b    {        //require('a.php'); 错

创建一个三角形类并且通过成员函数计算三角形的周长和面积《1》

首先定义一个三角形类 class Triangle//三角形类 { public: double getA(void);//得到a的值 double getB(void);//得到b的值 double getC(void);//得到c的值 void setA(double x);//设置a的值 void setB(double y);//设置b的值 void setC(double z);//设置c的值 bool isTriangle(void);//取三边的值 double Perimeter