Java私有嵌套类

时间:2018-03-15 20:41:49

标签: java inner-classes

考虑以下示例:

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),但编译器仍然没有抱怨。

0 个答案:

没有答案