您好, 欢迎来到 !    登录 | 注册 | | 设为首页 | 收藏本站

将类作为最终类和将类构造函数作为私有之间有什么区别

将类作为最终类和将类构造函数作为私有之间有什么区别

期末课程无法扩展。它可以防止这种情况

final class FinalClass {

}

// and later

class ExtendedClass extends FinalClass { // ERROR

}

这对于诸如String之类的事情很有用- 您不希望某人能够覆盖String(最常用的对象之一)的逻辑,并且能够(哦,我不知道)添加网络并发送所有返回您使用的字符串。如果可以扩展String,则可以这样做。

私有构造函数不能在类外部调用

class PrivateCons {

    private PrivateCons() {

    }
}

// later
PrivateCons pc = new PrivateCons(); // ERROR

通常这最终会像这样工作:(java.lang.Math是一个很好的例子)

class FuncLib {
    private FuncLib() { } // prevent instantiation
    public static void someFunc(...) { }
    public static int anotherFunc(...) { }
}

否则最终会像这样// // Integer实际上会这样做

class VerySpecial {

    private static Map<String,VerySpecial> cache;

    public static VerySpecial generate(String data) {
        VerySpecial result = cache.get(data);
        if(result == null) {
            result = new VerySpecial(data);
            cache.put(data,result);
        }
        return result;
    }

    private String data;

    private VerySpecial() { }

    private VerySpecial(String data) { this.data = data}

}

扩展类时,认情况下,构造函数会尝试调用认(无参数)构造函数。如果是私有的,那么在扩展它时必须显式调用一个非私有的构造函数。如果您没有要调用的非私有构造函数,则将无法对其进行扩展。感谢您提出的意见。 :-)

其他 2022/1/1 18:29:27 有451人围观

撰写回答


你尚未登录,登录后可以

和开发者交流问题的细节

关注并接收问题和回答的更新提醒

参与内容的编辑和改进,让解决方法与时俱进

请先登录

推荐问题


联系我
置顶