相关疑难解决方法(0)

Java构造函数中的可覆盖调用

我知道从Java中的对象构造函数调用可覆盖的方法是一种糟糕的(安全性)实践.但是,例如,如果构造函数必须初始化某些数据,则调用相应的setter方法似乎是合理的,这样我就不会复制代码.安装者是公开的,而不是最终的.是否有任何标准的处理方法,如声明私有的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); }
};
Run Code Online (Sandbox Code Playgroud)

java methods constructor encapsulation overriding

5
推荐指数
1
解决办法
2950
查看次数

为什么从构造函数调用Set方法不是一个好主意?

仅在继承或大多数情况下是真的吗?

public class MyClass {
   public int id;

     public MyClass() {
         // Some stuff 
         setId(5);
     }

     public setId(int id) {
         this.id = id;
     }
}
Run Code Online (Sandbox Code Playgroud)

java inheritance

4
推荐指数
1
解决办法
266
查看次数