public class Test1 {
public String name = "wang";
public Test1() {
Log.d("test", "Test1()");
}
public void Main() {
Log.d("test", "Main("+ name +")");
}
}
public class Test2 {
private String name = "wang";
public Test2() {
Log.d("test", "Test2()");
}
public void SetName(String str){
name = str;
}
public void Main() {
Log.d("test", "Main("+ name +")");
}
}
Test1 t1 = new Test1();
t1.name = "yi";
t1.Main();
Test2 t2 = new Test2();
t2.SetName("er");
t2.Main();
我想知道为什么
你是不是想问:
为什么不直接定义一个public的字段,而是要定义public的set和get方法操作private的字段?我能想到的原因有两个:
如果是常量,就没有必要用set和get方法,直接用public的字段就好
面向对象编程的原则是:一个类的数据不应该从外部直接修改,而是通过公开的方法来修改
感谢
第二种方法进行了数据封装了吧,没有对外暴露name这个属性,只是提供的SetName这个方法,如果需要重写业务逻辑变了也只需要修改SetName方法,而不需要在每个new对象的地方去进行修改。
怎么感觉就像字段 与属性 的封装?
private String _name ;
public string Name{ get _name set _name }
这样?