父类中的私有变量

Posted

技术标签:

【中文标题】父类中的私有变量【英文标题】:Private variables inside a parent class 【发布时间】:2018-09-06 00:31:16 【问题描述】:

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

我的问题是,子类可以从父类看到什么?它可以看到所有的公共方法和变量,而没有看到私有变量吗?

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);
  

【问题讨论】:

这取决于您使用的语言。 通常是公开的和受保护的。 ***.com/questions/860339/… 这是java,所以你需要一个方法来访问? 【参考方案1】:

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

【讨论】:

【参考方案2】:

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

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

【讨论】:

以上是关于父类中的私有变量的主要内容,如果未能解决你的问题,请参考以下文章

子类能不能继承父类的成员变量

继承的基本概念: Java不支持多继承,也就是说子类至多只能有一个父类。 子类继承了其父类中不是私有的成员变量和成员方法,作为自己的成员变量和方法。 子类中定义的成员变量和父类中

Java子类访问父类的私有成员变量

子类如何访问父类

06JAVA基础面向对象-继承/多态

06JAVA基础面向对象-继承/多态