【问题标题】:Can I have private final fields in abstract class我可以在抽象类中有私有最终字段吗
【发布时间】:2011-08-31 11:39:42
【问题描述】:

我可以创建一个像下面这样的抽象类吗?

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;
    }
}

【问题讨论】:

  • 如果你尝试它会发生什么?为什么你认为这不可能?
  • 为什么不呢?您有什么具体问题想问吗?

标签: java abstract-class


【解决方案1】:

简短:是的。

Long(er):抽象类只是一个不能按原样实例化的类,因为可能仍然缺少部分。因此我可以拥有私人领域。请注意,子类无法访问它们,除非通过 getter/setter。

【讨论】:

    【解决方案2】:

    您的代码是正确的。
    注意:抽象类的好做法是受保护的构造函数,因为类本身不能实例化,继承类必须调用super(...)构造函数。

    【讨论】:

      【解决方案3】:

      是的,你可以。

      考虑将它们设为protected 而不是私有的可能性,以允许您的子类(即扩展此类的子类)直接访问这些字段..

      【讨论】:

        【解决方案4】:

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

        【讨论】:

          猜你喜欢
          • 2010-11-20
          • 2014-06-19
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          • 2012-09-29
          相关资源
          最近更新 更多