构造函数中的 Java 可重写调用

标签 java methods constructor overriding encapsulation

我知道从 Java 中的对象构造函数调用可重写的方法是一种不好的(安全)做法。但是,例如,如果构造函数必须初始化一些数据,那么调用相应的 setter 方法似乎是合理的,这样我就不会复制代码。二传手是公开的,而不是最终的。有没有任何标准的方法来处理这个问题,比如声明公共(public)方法调用的私有(private) setter 方法?为了说明,这里有一些代码:

class A {
    private double x,y;
    private privateSetX(double x1) { x=x1; }
    private privateSetY(double y1) { y=y1; }
    public A() { privateSetX(0); privateSetY(0); }
    public setX(double x1) { privateSetX(x1); }
    public setY(double y1) { privateSetY(y1); }
};

最佳答案

如果您真的想要这样做,请创建一个由构造函数和公共(public) setter 调用的辅助私有(private) setter 方法。

关于构造函数中的 Java 可重写调用,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/6104262/

相关文章:

java - java中long到String(和返回)的简单对称加密

java - Spring 的 @Value 注释可以与实现 BeanPostProcessor 的类型一起使用吗?

java - 从不同方法的参数中调用返回方法

VC2010 中的 C++0x 对等构造函数

c++ - C++ 中的类构造函数

java - 在 Java 运行时添加 final 修饰符

java - 从 BST 获取最大值和最小值(C++ 与 Java)

python - 如何使用 Python 方法和实例将文件中的数据存储在字典中?

swift - 无法覆盖 prefersHomeIndicatorAutoHidden() 方法

c++ - 选择哪种设计来进行复杂的对象初始化?