java中的继承私有字段

时间:2014-03-18 17:46:15

标签: java

私有字段不继承所以在B类中不存在z但是方法setz(int a)存在!

class A{
   private int z=1;

   public void setz(int a){
      z=a;
   }
}

class B extends A{
}

如果新的B类对象并调用setz(int a)z改变但是这个方法应该有错误,因为z不存在!怎么解释呢?

2 个答案:

答案 0 :(得分:6)

您认为z中不应存在B的错误。确实private变量不是继承的,但这并不能阻止它存在。它只是B无法访问。

答案 1 :(得分:2)

setz(int a)不会出错,因为它是公开的。此外,父类中仍存在z

B b = new B();
b.z = 1;  // Error because z is a private member of A
b.setz(1); // No error because setz() is a public method of A