A股上市公司传智教育(股票代码 003032)旗下技术交流社区北京昌平校区

 找回密码
 加入黑马

QQ登录

只需一步,快速开始

© Twinboss 中级黑马   /  2013-8-23 14:52  /  1124 人查看  /  4 人回复  /   0 人收藏 转载请遵从CC协议 禁止商业使用本文

本帖最后由 forward 于 2013-8-24 21:31 编辑

我想用继承多态的特点,把图形面积和周长的通用操作求出来,但是想了很久都没想出来,那位大神能帮我想想啊?最好有代码,让我找找思路。谢谢回复

评分

参与人数 1技术分 +1 收起 理由
滔哥 + 1

查看全部评分

4 个回复

倒序浏览
其实我还没完全弄清楚这个题目所表达的意思,按照自己理解的写了下。

class Graph{
        public  double getArea(){
                return 0;}
        public  double  getGirth(){
                return 0;}
}
class Circle extends Graph{
        public static final  double PI=3.14;
        public double r;
        Circle(double r){
                this.r=r;
        }
        public double getArea(){
        return PI*r*r;
        }
        public double getGirth(){
                return 2*PI*r;
        }
}
class  Trigon extends Graph{
       
        public  double a;public  double b;
        public  double c;
        Trigon(double a,double b,double c){
                this.a=a;
                this.b=b;
                this.c=c;
                }
        public double getArea(){
        double s,p;
                p=(a+b+c)/2;
                s=Math.sqrt(p*(p-a)*(p-b)*(p-c));
                return s;
        }
        public double getGirth(){
                return a+b+c;
        }
}

class GraphTest{
        public  static void main(String[]args){
          Graph m=new Trigon(3,4,5);
                System.out.println(m.getGirth());
                System.out.println(m.getArea());
        }
}

评分

参与人数 1技术分 +1 收起 理由
滔哥 + 1

查看全部评分

回复 使用道具 举报 1 0
/抽象的形状类
public abstract class Shape{ }

//接口
public interface IDisplay{
  void display(); //显示图形的基本信息
  double getArea(); //计算面积
  double getGirth(); //计算周长
}

//三角形类
public class Triangle extends Shape implements IDisplay{
  protected double a;
  protected double b;
  protected double c;

  public Triangle(double a, double b, double c){
    this.a = a; this.b = b; this.c = c;
  }

  @Override public double getArea() {
    double s = (a + b + c) / 2;
    return Math.sqrt(s*(s-a)*(s-b)*(s-c));
  }

  @Override public double getGirth() {
    return this.a + this.b + this.c;
  }

  @Override public void display() {
    System.out.println("三角形");
    System.out.println("边长:" + a + ", " + b + ", " + c);
  }
}

//矩形类
public class Rectangle extends Shape implements IDisplay {
  protected double width; protected double height;

  public Rectangle(double width, double height){
    this.width = width;
    this.height = height;
  }

  @Override public double getArea() {
    return this.width * this.height;
  }

  @Override public double getGirth() {
    return 2 * ( this.width + this.height);
  }

  @Override public void display() {
    System.out.println("矩形");
    System.out.println("宽:" + this.width + ", 高:" + this.height);
  }
}

//圆类
public class Circle extends Shape implements IDisplay {
  protected double radius;

  public Circle(double radius){
    this.radius = radius;
  }

  @Override public double getArea() {
    return Math.PI * this.radius * this.radius;
  }

  @Override public double getGirth() {
    return 2 * Math.PI * this.radius;
  }

  @Override public void display() {
    System.out.println("圆");
    System.out.println("半径:" + this.radius);
  }
}

评分

参与人数 1技术分 +1 收起 理由
滔哥 + 1

查看全部评分

回复 使用道具 举报
因为不同的图形的属性不一样,例如:
三角形:底和高,
矩形:长和宽
圆:半径
梯形:上底,下底和高,
总而言之:他们求自己面积和周长需要的属性不一样,也就是他们需要需要的条件元素,
               但是他们的都有面积和周长,所以要把他们公共的抽出来,那就是求周长和面积的方法,
方法:可以使用一个抽象类或者是接口,里面有求周长和面积的方法,再定义各个图形的类,都继承或者是实现抽象类或者是实现接口。
        然后在各自的类中重写周长和面积方法!
希望对你有帮助!
回复 使用道具 举报
  1. <p>class Triangle {
  2.        
  3.         public static void main(String[]args){
  4.                 ChangFangXing c=new ChangFangXing(3,5);   
  5.                 System.out.println(c.zhouchang());
  6.                 System.out.println(c.mianji());
  7.                 }
  8.         }
  9.        
  10.         //定义长方形类,长和宽,我是拼音
  11. class ChangFangXing{     
  12.         double x;
  13.         double y;
  14.         ChangFangXing(double x,double y){
  15.                 this.x=x;
  16.                 this.y=y;
  17.                
  18.                 }</p><p>//周长
  19.         double zhouchang(){
  20.           return (x+y)*2;
  21.                         }</p><p>//面积
  22.           double mianji(){
  23.                                 return this.x*this.y;
  24.                                 }
  25.        
  26.                
  27.         }</p><p> </p>
复制代码

评分

参与人数 1技术分 +1 收起 理由
EYE_SEE_YOU + 1

查看全部评分

回复 使用道具 举报
您需要登录后才可以回帖 登录 | 加入黑马