父类中的私有变量

时间:2018-03-27 14:28:35

标签: java variables inheritance private

所以在我老师给我的代码中,它让子调用一个从私有数组返回值的方法。

我的问题是,儿童班可以从父母阶层看到什么?它能看到所有公共方法和变量,而没有私有变量吗?

class Polygon 
{ 
  private int[] sideLengths; 

  public Polygon(int sides, int ... lengths) 
  { 
    int index = 0; 
    sideLengths = new int[sides]; 
    for (int length: lengths) 
    { 
      sideLengths[index] = length; 
      index += 1; 
    } 
  } 

  public int side(int number) 
  { 
    return sideLengths[number]; 
  } 

  public int perimeter() 
  { 
    int total = 0; 
    for (int index = 0; index < sideLengths.length; index += 1) 
    { 
      total += side(index); 
    } 
    return total; 
  } 
}

class Rectangle extends Polygon 
{ 
  public Rectangle(int sideone, int sidetwo)
  {
    super(4, sideone, sidetwo, sideone, sidetwo);
  }
  public int area() 
  { 
    return (side(0)*side(1));
  }
}

class Square extends Rectangle 
{ 
  public Square(int sideone)
  {
    super(sideone, sideone);
  }
}

2 个答案:

答案 0 :(得分:2)

在您的情况下,Java可以让孩子看到父项的私有变量,因为子项与变量在同一范围内。如果您对其工作原理感兴趣,请参阅this链接

答案 1 :(得分:0)

我相信子类(子)继承了超类(父类)中的构造函数之外的所有东西。即使它是私有的,也会继承它。您可能无法访问它,但它就在那里。

话虽如此,您的示例演示了同一类的其他成员可以访问的私有数组。这就是getter和setter的用武之地。因为数组是私有的,所以如果你在同一个类中提供getter或setter,外部类只能与它交互。

相关问题