【问题标题】:object interaction: Calculation on geometric shape对象交互:几何形状的计算
【发布时间】:2015-01-16 04:54:40
【问题描述】:

所以基本上我有这个问题: 1)Square,Rectangle的子类,包含一个构造函数(带有一个边长的参数)和调用Rectangle类的方法来确定正方形的周长和面积的方法。

到目前为止,我有这个正方形类

class sqaure extends rectangle
{
  public Square(double size)
 {
   super(size, size)
 }
}

这个用于矩形类

class rectangle extends Shape
{
  private double length; 
  private double width; 

  public rectangle (double length, double width)
  {
    this.length = length; 
    this.width = width;
  }
  double area()
  {
    return length * width;
  }
  double perimeter()
  {
    return 2.0 * (width + length);
  }
}

我需要关于它说我需要调用矩形类的方法来确定正方形的周长和面积的部分的帮助。

谢谢

【问题讨论】:

    标签: java methods


    【解决方案1】:

    首先,按照惯例,所有类名都需要大写。

    另外,您不需要编写任何额外的代码:只需初始化正方形并调用其上的方法。

    Square s = new Square(50d);
    double area = s.area();
    double perimeter = s.perimeter();
    

    或者只是override area 和 perimeter 方法并返回 square 类中的超级方法:

    double area(){
        return super.area();
    }
    double perimeter(){
        return super.perimeter();
    }
    

    如果您需要专门为 square 类进行额外计算,后者很有用,但在本例中,您不需要它。

    【讨论】:

    • 我认为您的第一种方法更好。在这里覆盖没有意义,因为我们没有在 Rectangle 类中增加实现。
    • 正如我所说,除非您进行特定于正方形的额外计算,否则您不需要它
    • @Sid 也是,这个操作提到了编写调用矩形类方法的方法,所以我写了一个来证明你是这样做的
    • 绝对没问题,你的方法一点也不错误,只是第一个几乎是完美的。
    【解决方案2】:

    首先,您应该尝试遵循以大写字母开头的 java 类的命名标准。

    Square mySquare = new Square(10.0);
    double theArea = mySquare.area();
    double thePerimeter = mySquare.perimeter();
    

    这些对area()perimeter() 的调用正在使用Rectangle 中的实现,仅仅是因为它们没有在Square 中被覆盖。

    【讨论】:

      猜你喜欢
      • 2017-02-05
      • 2014-11-04
      • 1970-01-01
      • 1970-01-01
      • 2019-03-18
      • 1970-01-01
      • 2021-11-20
      • 1970-01-01
      • 2021-10-23
      相关资源
      最近更新 更多