在一个java类中,构造函数能否调用this.set()方法?
例如,一般情况下,类Test的代码如下:
class Test(){
    private String testStr;
    public Test(String testStr){
        this.testStr = testStr;
    }  public void setTestStr(String testStr){
       this.testStr = testStr;
   }
     public String getTestStr(){
       return this.testStr;
   }
   
}能否写成:
class Test(){
    private String testStr;
    public Test(String testStr){
        this.setTestStr(testStr);
    }
    public void setTestStr(String testStr){
       this.testStr = testStr;
   }
     public String getTestStr(){
       return this.testStr;
   }
}为什么?有什么区别?谢谢

解决方案 »

  1.   

    此回复为自动发出,仅用于显示而已,并无任何其他特殊作用
    楼主【icecreamchen】截止到2008-07-16 11:58:17的历史汇总数据(不包括此帖):
    发帖的总数量:0                        发帖的总分数:0                        每贴平均分数:0                        
    回帖的总数量:0                        得分贴总数量:0                        回帖的得分率:0%                       
    结贴的总数量:0                        结贴的总分数:0                        
    无满意结贴数:0                        无满意结贴分:0                        
    未结的帖子数:0                        未结的总分数:0                        
    结贴的百分比:---------------------结分的百分比:---------------------
    无满意结贴率:---------------------无满意结分率:---------------------
    如何结贴请参考这里:http://topic.csdn.net/u/20080501/09/ef7ba1b3-6466-49f6-9d92-36fe6d471dd1.html
      

  2.   

    就你的代码来说,没有区别。除非你把 setTestStr 的内容改了,那就有区别了。
      

  3.   

     public Test(String testStr){ 
            setTestStr(testStr); 
        } 
    直接这样不行吗 反正你是想在构造函数里调用你的setTestStr方法  是吗
      

  4.   

    加不加this都可以,我想知道这样在构造函数中调用set方法进行初始化和直接用参数初始化有什么区别,
      

  5.   

    其实是一样的,如果set方法中处理的事情比较多的话,很没有必要把相同的代码在构造方法中再写一遍。
      

  6.   


    噢,明白了,和happystarting说的一样,局限在于:构造函数受setTestStr方法体的影响.
      

  7.   

    噢,我明白了,和happystarting说的一样,这样的局限:构造函数会受set方法体影响.
    谢谢
      

  8.   

        public void setTestStr(String testStr){ 
          this.testStr = testStr; 
      } 构造方法你只是想给testStr赋值,但setTestStr(String testStr)还可以做其它事,当想改变方法的具体实现时可能会引入一些其它的东西,如其它的变量,而这些变量并不需要它在构造方法被初始化,还有可能方法中新加的会引起BUG,如:在构造方法中又多初始化了一个变量testStr1,也方法setTestStr(String testStr)用到了testStr1
      

  9.   


    其实我试过简单示例了,知道这两种做法的结果一样,因此才会疑惑,既然这样做没什么区别,为什么我们常见到的是用参数直接初始化而不是调用set初始化.
    经过大家讨论才知道区别.其实我多想一下应该就能明白的.呵,谢谢楼上的.
    其实我觉得有时候一根筋地朝一个方向想问题会浪费很多时间,拿出来讨论讨论可能快速获取答案.
    反应敏捷的人不一定博学,博学的人不一定什么问题都是自己想出来的.