2008-10-04 79 views
6

在Java中,是否有可能强制类有一组特定的子类而没有其他类?例如:有没有一种方法可以在Java中实现代数类型?

public abstract class A {} 
public final class B extends A {} 
public final class C extends A {} 
public final class D extends A {} 

我能以某种方式强制执行A​​的其他子类无法创建吗?

回答

4

给予类A具有包级别可访问性(并且没有其他构造函数)的构造函数。

谢谢Dave L.,关于没有其他构造函数的一点。

+0

可选地所有作为嵌套类具有A仅具有私有构造函数。 – 2008-10-04 14:00:55

+0

虽然这并不美观,但是:A.B,A.C ... – 2008-10-04 17:53:24

+1

将静态导入到救援中,marxidad – Apocalisp 2008-10-21 03:47:37

0

你可以把A,B,C,D类放在一个单独的包中,并使A类不公开。

3

你可能想要一个枚举(Java> = 1.5)。枚举类型可以有一组固定值。它具有所有类的好处:它们可以有字段和属性,并且可以使它们实现一个接口。枚举不能被扩展。

实施例:

enum A { 

    B, 
    C, 
    D; 

    public int someField; 

    public void someMethod() { 
    } 


} 
相关问题