在继承类使用私有变量 - Java的(Using a private variable in a

2019-07-22 09:17发布

需要有对私有变量和继承更多的了解。 早些时候,我的理解是,如果有一类领域,当我继承的类,即不通过限制访问的字段(私有变量)将在那里在继承类。 但我能使用基类的私有变量,如果有一个公共克/ setter方法。

我如何能想象在基类中的私有变量?

Answer 1:

class A {
  private int a;
  public A(int a) { this.a = a; }
  public int getA() {return a;}
}

class B extends A {
  public B(int b) { super(b); }
  public int getB() {return getA();}
}

int result = new B(10).getA();

结果将是在类A 10私人字段被种遗传到B而B不能直接访问它。 只有通过使用公共/默认/保护访问类A,B定义的方法是一所以它总是有所有有能力的和有可能在B类中定义了一些新的领域相同的领域



Answer 2:

这是Java教程http://docs.oracle.com/javase/tutorial/java/IandI/subclasses.html说:

子类不继承父类的私有成员。 然而,如果超有公众或受保护访问其私有字段的方法,这些也可以由子类使用

尽管如此,看到这

class A {
   private int i;
}

class B extends A {
}

B b = new B();
Field f = A.class.getDeclaredField("i");
f.setAccessible(true);
int i = (int)f.get(b);

它工作正常,返回字段的值, i的B实例。 也就是说,B有i



Answer 3:

私有变量/成员不继承。 这是唯一的答案。

提供公共访问方法是这样的封装工作。 你让你的数据的私有性,并提供方法来获取或设置它们的值,从而接入可以控制的。



文章来源: Using a private variable in a inherited class - Java