我可以在抽象类中使用私有final字段吗?

时间:2011-08-31 11:39:42

标签: java abstract-class

我可以创建如下的抽象类吗?

abstract class A{
private final String    foo;
private final String    too;

public A(final String foo, final String too) {
    this.foo= foo;
    this.too= too;
}
public String getfoo(){
        return foo;
    }
public String gettoo(){
        return too;
    }
}

4 个答案:

答案 0 :(得分:7)

简短:是的。

Long(呃):抽象类只是一个无法按原样实例化的类,因为部分可能仍然缺失。因此我可以拥有私人领域。请注意,除了getters / setters之外,子类无法访问它们。

答案 1 :(得分:1)

您的代码是正确的。
注意:抽象类中的良好实践是受保护的构造函数,beacuse类本身无法实例化,继承类必须调用super(...)构造函数。

答案 2 :(得分:0)

是的,你可以。

考虑是否可以使它们protected而不是私有,以允许您的子类(即扩展此类的子类)直接访问字段。

答案 3 :(得分:-1)

当然可以。但是这不是一个好习惯,因为你不能创建这个类的一个对象。主要的一点是你也不需要这种类,因为你没有在它里面定义任何抽象函数。但根据你的问题,你绝对可以创建这种类型的抽象类。