一.重写String的toString()方法返回s值
二.因为你前面已经定义了Soap castille
三.因为s在Soap的定义中是private,不能直接访问不知道我说的对不对

解决方案 »

  1.   

    第二点前面已经定义了Soap castille 我试过放在下面可是不行。
    第一点和第三点我还是不太懂
    “因为s在Soap的定义中是private,不能直接访问”好象不能用句柄(castille)直接用在
    System.out.println("castille = " + castille);里吧!
    大哥我真的不太懂,麻烦你教教我吧,我知道着是类再生中的合成,可是我不能理解,帮帮忙,谢谢!!!!!!!!!!!!!!!!!!!!!
      

  2.   

    第三点因为s在Soap的定义中是private,不能直接访问 是对的我试过了,谢谢!
    可是我不理解
    System.out.println("castille = " + castille);光用句柄castille它怎麽知道我是引用Soap下的S呢????????
    我知道很麻烦你了,不过还是希望您能帮帮我
      

  3.   

    season_fly(一望无际的鸟) 说得都对。我再来解释一下。
    1、第一个问题:因为Java中所有的类都是类Object的子孙,都继承了toString()方法,如果不覆盖此方法则使用Object的toString方法。
    2、如果你要写成Soap castille = new Soap();则需要将前面定义的语句删除,但同时后面也需要进行修改,因为后面的pint方法使用了属性castille。
       写成Soap castille = new Soap();的话,castille的生命范围只在Bath()中。3、因为s在Soap的定义中是private,不能直接访问。
       在Java中重载了运算符+,用于连接字符串,
       如果String+Class,则会自动调用Class.toString()!!!
       语句"castille = " + castille实际上等价于:
       "castille = " + castille.toString()
      

  4.   

    光用句柄castille它怎麽知道我是引用Soap下的S呢????????
    这是加载Soap类,顺序执行下来的结果啊
      

  5.   

    tangshancheng(98007) 解释得真清楚,学习~
      

  6.   

    第一个问题上面的已经说了,我就不重复了,第二个问题通常的生命要么是:
    Soap castille;
    castille = new Soap();                       
    一般这两个语句紧接在一起,因为java里面涉及到变量的作用域的范围的问题.
    或者这样声明:Soap castille= new Soap();比较安全,呵呵第三个问题,就是因为:在将变量设置为private后,这个变量只能通过类的成员方法才能访问,
    像你那样直接通过类明.变量名的方法来访问是不和法的!!要想使用类明.变量名的方法
    来访问变量的话,一般要么将变量设置成public,或者不加修饰苻,不加说明是友好型.