1 回答
TA贡献2036条经验 获得超8个赞
当这完成时Library:
private int capacity;
private Book[] books = new Book[capacity];
super()构造函数中的代码尚未运行(这些初始化在最开始 [或在子类之后] 插入到构造函数中)。所以capacity有它的默认值,0。后来你分配给capacity,但为时已晚。
反而:
public class Library {
private int capacity;
private Book[] books; // *** Don't initialize it here
public Library(int capacity) {
if (capacity > 1) {
this.capacity = capacity;
}
else {
this.capacity = 4;
}
this.books = new Book[this.capacity]; // *** Initialize it here
}
但是这里还有另一个有用的东西要学。在遍历数组或类似数组时,使用数组的大小知识,而不是其他信息源 ( capacity)。所以:
for (int x = 0; x < this.books.length ; ++x) {
// -----------------^^^^^^^^^^^^^^^^^
坚持真相的主要来源。capacity:-)(事实上,您可能根本不需要您的实例成员。)
添加回答
举报