class Order 一般这样的类应该都是java bean吧,java bean设计原则就是要求封装性(实际所有类最好封装)
封装属性即私有化,提供get、set方法(根据需要)共外部调用,防止用户直接修改类属性;
另外,如果用在struts、spring的java bean就必须封装,否则无法自动注入;
这个类不用管,就是一个类有个属性,然后这个属性要不要添加个对应的私有属性,按照你说的是不是因为根据设计原则才这样写的,有没有其它的好处或者是原因?
@牧马: 是的,按照设计原则,主要目的就是封装。当然你不用private也是可以的,作为普通类。
C#的语法糖而已,你下面的两种写法在C#编译器编译之后还是会添加私有变量,变成和你最开始写的差不多
也就是添加个私有变量是多余的吗?
@牧马: 你下面的两种写法是C#3.0以后的语法才加上的,术语好像是叫自动属性,语法有一点错误,那几位给你指出来了。这样的目的其实是为了开发起来更自然一点。如果想验证是不是真的添加了私有变量,你用ILDasm反编译以下程序及就能够看到。所以,它仅仅是C#语法糖而已。
C#约定,变量尽量私有,字段公开;
你下面的两种写法应该是通不过编译的!get,set不能独立存在。为了让属性只读,可以采用以下写法:
public IEnumerable<Item> Items { get; private set; }
否则,就需要按照你的第一种写法,先定义私有变量的方式写。
果然不能通过编译..学到了。那这个公开的字段对应一个私有的变量也只是约定才这样做的吗?为什么这么约定呢?