问题描述
在学习这章节内容时,有一点没明白,那就是public与private的定义首先说类,为了体现面向对象,书中例子是,定义一个类,类中定义员工属性no,name,age以及address,然后在前端页面调用并赋值,所以类中有针对属性的get,set,代码如下:namespaceC03Ex02{publicclassEmployee{privatestring_no;privatestring_name;privateint_age;privatestring_address;publicstringE_no{get{return_no;}set{_no=value;}}publicstringE_name{get{return_name;}set{_name=value;}}publicintE_age{get{return_age;}set{_age=value;}}publicstringE_address{get{return_address;}set{_address=value;}}publicvoidWorkOn{}publicvoidWorkOff{}}}好了,小问题来了,为什么在这个类中,先要用private,然后在用public?为了防止其它类中变量名冲突问题吗??发现即便是公共属性类,也有此写法,是我所描述的原因吗?等待答复
解决方案
解决方案二:
这是一个私有成员(Field)privatestring_no;这是私有成员_no对应的属性(Property)publicstringE_no{get{return_no;}set{_no=value;}}这样做,是可以保持Employee的封闭性,隐藏其内部实现。在新版的NET里,可以用这样的方式实现:publicstringE_no{get;set;}
解决方案三:
public是对外的访问的,private那个是自己内部用的,你还是好好学习一下面向对象的概念吧
解决方案四:
谢谢楼上2位的答复
解决方案五:
privatestring_no;//字段私有,防止外部调用//属性公有,给外部调用publicstringE_no{get{return_no;}set{_no=value;}}当然也可以省略为:publicstringE_no{get;set;}
解决方案六:
privatestring_no是私有字段publicstringE_no是公有属性公有属性对私有字段封装(隐藏具体实现过程),其它类访问公有属性
解决方案七:
此谓之访问器(getter)和设置器(setter)它们的存在时有道理的:(1)如果你将字段直接暴露为public,那么它很有可能被赋以错误的值,但设置器可以避免这的。(2)如果你想字段的值变化了触发某个事件的话,那么setter也很容易帮你做的。(3)某些字段,有时候需要智能被内部修改,但可以被外部访问例如(1)classperson{privateintage;publicintAge{set{if(value>0&&value<100)age=valueelse//TODO错误处理}get{returnage;}}}(2)classperson{privateintage;publicintAge{set{if(value>0&&value<100)age=valueelse//TODO错误处理//TODOage被改变的事件}get{returnage;}}}(1)classperson{privateintage;publicintAge{privateset{//age只能在内部被修改if(value>0&&value<100)age=valueelse//TODO错误处理}get{returnage;}}}