【问题标题】:Public class square Java returnin all "0" [closed]公共类方形Java返回所有“0”[关闭]
【发布时间】:2014-06-11 17:27:00
【问题描述】:

有一个类叫 Square

public class Square
{
private double side;

public Square(double side)
{
    side = side;
}

public double getSide()
{
    return side;
}

public void setSide(double s)
{
    side = s;
}

public double getArea()
{
    return side * side;
}

public double getPerimeter()
{
    return side * 4;
}

另一个程序声明了一个 Square 并将值 4.0 传递给构造函数。然后它使用类的方法来打印 Square 对象的边长、面积和周长。以下是程序输出的内容。

边长:0.0 面积:0.0 周长:0.0

我认为问题在于“私人双面”;线。但我不确定。还有其他的花絮可以扔吗?

【问题讨论】:

  • this.side = side; 否则您将局部变量分配给自身,而不是实例变量。
  • side = side 不会从编译器生成警告吗?

标签: java constructor public


【解决方案1】:

在构造函数中,参数side 将是一个局部变量。如果要引用实例变量side,请使用this关键字

public Square(double side)
{
    this.side = side;
}

来自Java Tutorials

在实例方法或构造函数中,this 是对当前对象的引用——正在调用其方法或构造函数的对象......

【讨论】:

    【解决方案2】:

    你需要这样做

    public Square(double side) {
        this.side = side;
    }
    

    在您的代码中,side = side 只是将 side 分配给自身。由于它默认为零,它只是将零分配给自己。

    在构造函数中,side 被创建为私有变量。要访问类中的“side”变量,您必须使用 this.side。 “this”指的是类的实例,所以“this.side”是告诉代码改变变量side,它是Square的一个变量。

    【讨论】:

      【解决方案3】:

      其他答案都是正确的。您应该使用 this.side = side,但是,如果您重命名两者之一,您的代码会更清晰。参数或内部值。这就是你可以做到这一点并使代码更易于阅读的方法:

      public class Square
      {
      private double side;
      
      public Square(double aSide)
      {
          side = aSide; // in here it is obvious which one is the parameter and which one is the private variable
      }
      
      public double getSide()
      {
          return side;
      }
      
      public void setSide(double s)
      {
          side = s;
      }
      
      public double getArea()
      {
          return side * side;
      }
      
      public double getPerimeter()
      {
          return side * 4;
      }
      

      【讨论】:

      • 这是我喜欢的风格,因为我真的不喜欢this.污染。
      猜你喜欢
      • 2011-07-21
      • 1970-01-01
      • 2014-11-20
      • 2013-04-05
      • 1970-01-01
      • 1970-01-01
      • 2014-01-03
      • 1970-01-01
      • 2014-02-12
      相关资源
      最近更新 更多