Java基础篇:如何解决成员的访问和继承?

83 阅读1分钟

Java基础篇:如何解决成员的访问和继承? 尽管子类包括超类的所有成员,它不能访问超类中被声明成private的成员。例如,考虑下面简单的类层次结构:

/* In a class hierarchy, private members remain 
 private to their class. 
 This program contains an error and will not 
 compile. 
*/ 
// Create a superclass. 
class A { 
 int i; // public by default 
 private int j; // private to A 
 void setij(int x, int y) { 
 i = x; 
 j = y; 
 } 
} 
// A's j is not accessible here. 
class B extends A { 
 int total; 
 void sum() { 
 total = i + j; // ERROR, j is not accessible here 
 } 
} 
class Access { 
 public static void main(String args[]) { 
 B subOb = new B(); 
 subOb.setij(10, 12); 
 subOb.sum(); 
 System.out.println("Total is " + subOb.total); 
 } 
}

该程序不会编译,因为B中sum( )方法内部对j的引用是不合法的。既然j被声明成private,它只能被它自己类中的其他成员访问。子类没权访问它。

一个被定义成private的类成员为此类私有,它不能被该类外的所有代码访问,包括子类。 Java基础篇:如何解决成员的访问和继承?