场景:
public class UtilityClass {
    // Suppress default constructor for noninstantiability
    private UtilityClass() {
        throw new AssertionError();
    }
}
public class UtilityClass {
    // Suppress default constructor for noninstantiability
    private UtilityClass() {
        throw new AssertionError();
    }
    public static UtilityClass getInstance()
    {
        return new UtilityClass ();
    }
}
public class Test {
    public static void main(String[] args)
    {
        UtilityClass one = UtilityClass .getInstance();
    }
}
public class SubUtilityClass extends UtilityClass {
}
public class Test {
    public static void main(String[] args)
    {
       // UtilityClass one = new UtilityClass();
    }
}
原文:http://www.cnblogs.com/ttylinux/p/4355779.html