考虑以下示例:
import java.util.ArrayList;
public class Invoice {
private static class Item {
String description;
int quantity;
double unitPrice;
double price() { return quantity * unitPrice; }
}
private ArrayList<Item> items = new ArrayList<>();
public void addItem(String description, int quantity,
double unitPrice) {
Item newItem = new Item();
newItem.description = description;
newItem.quantity = quantity;
newItem.unitPrice = unitPrice;
items.add(newItem);
}
}
据我所知,嵌套类只对封闭的外部类可见。但是我有以下问题。
为什么我们允许直接访问内部类newItem.description
的实例变量?这是因为默认的可见性修饰符在此类中对于实例字段是公共的吗?通常我们会有一系列的setter和getter方法。
此外,我尝试将嵌套类的一个实例变量设为private(private int quantity
),但编译器仍然没有抱怨。