posts - 1, comments - 0, trackbacks - 0, articles - 2
  BlogJava :: 首页 :: 新随笔 :: 联系 :: 聚合  :: 管理

日历

<2025年4月>
303112345
6789101112
13141516171819
20212223242526
27282930123
45678910

随笔档案

文章档案

搜索

  •  

最新评论

警惕

Posted on 2005-09-15 22:33 太阳雨 阅读(72) 评论(0)  编辑  收藏

   现在大部分人写程序的时候总是希望将数据封装的相对良好,但是往往在public修饰的方法中返回私有成员,从而导致在调用方法中的对象与该私有成员指向相同的内存空间,从而破坏了封装性。从下面的例子中 可以看到结果。

class Sport{
  
public String name = "Green";
  
public int age = 20;
  
public Object clone(){
    Object obj 
= null;
    
try{
      obj 
= super.clone();
    }
catch(Exception e){
            }

    
return obj;
  }

}

public class Test{
  sport s 
= new sport();
  sport ss 
= new sport();
  
private String [][] content = {
        
{"","Test"},{"ar"}
                                }
;

  
protected void pp(){
    System.out.println(ss.name);
  }
 
  
public sport getSs(){
       
return (sport)ss.clone();
  }

}
class Demo
{
  
public static void main(String [] args){
        Test t 
= new Test();
        t.change();
        t.pp();
        sport spt
= t.getSs();
            //spt.name = "Test";
        t.pp();
    }

}
如果Test的getSs中直接返回ss,则在Demo中spt.name就可以修改t.name

只有注册用户登录后才能发表评论。


网站导航: