Java扩展类访问器

时间:2012-11-21 19:49:27

标签: java extends

有没有办法从子类访问父类中的private字段? 即:

public class parent<T> {
    private int MaxSize; 

    ...

}

public class sub extends parent {
    public int getMaxSize() {
        return MaxSize;
    }
}

基本上我想要一个访问器方法getMaxSize()来返回ArrayQueue的最大大小。感谢。

2 个答案:

答案 0 :(得分:1)

否 - private字段只能在声明它们的类中直接访问。但是,您可以创建字段protected,这将允许您从子类访问它。下表是一个方便的参考:

Access permitted by each moodier:

Modifier    Class   Package   Subclass   World
----------------------------------------------
public       Y       Y         Y          Y
protected    Y       Y         Y          N
no modifier  Y       Y         N          N
private      Y       N         N          N

[source]

当然你也可以写一个public(或protected!)getter方法,它只返回你的字段的值,并在子类中使用这个方法而不是实际的字段本身。

除此之外,在Java中用 camelCase 编写变量名称是常规,即maxSize

答案 1 :(得分:1)

private变量无法从其声明类以外的任何类访问,这意味着子类无法访问其父级的private个变量。

您可以在父类中添加具有public访问权限的getter,它们都允许子类访问。使用此结构,您的子类也从父级继承getMaxSize(),从而无需在子类中声明该方法。

public class Parent {
    private int maxSize;

    public int getMaxSize() {
        return maxSize;
    }
}