(1)变量取值和设置值,只能给它什么就是什么,一点逻辑判断也没有,而我们可以通过get和set在内部做一些处理,过滤掉一些不合理的数据,也减少异常的发生。
(2)有时,我们并不想要原模原样的变量值,可能需要对它加工的数据,如以上Grade方法,我们可以用get,当然,这种加工后的数据,是不允许用户人为改变的(是通过算法算出来的),所以不能开放给他set方法。
总之,有了get和set方法,我们调用起来才能更安全,否则,private和protected就没有意义了,因为在类我外部(包括对象调用)都无法调用到private和protected属性。如果把属性都定义成pubic,就太不安全了。
这是转述别人的回答,基本上就这些了,主要就是减少异常的几率,和过滤掉一些不合理的数据
说白了,一方面上让你远离字段暴露性操作,变成通过类的方法(属性格式)操作,体现OOP精神;一方面可以简化字段规则性方法;起名字嘛,用大小写第一个字母美化一下了,其实什么OOP,世界上暂时没有纯粹的OOP,都是代码整合的,故弄玄虚,根本上还是C语言过程无敌,其它都是语言组织罢了,弄个包,命名空间,浮云.精准的算法,强大的网工,才是王道,出个外卦比做个MIS强百倍
不过是为了迎合我们习惯 类.属性=VALUE,这种引用方式,不然还要类.方法(参数),不直观
作绝点,类变量全部private掉,方法化存取(属性)
这样可以保证你传进来的值符合要求啊
在set里面可以加判断条件的
private int age();
public int getAge()
{
return age;
}
public void (int value)
{
if(value<=0&&value>100)
{
this.age = value;
}
else
{
console.WriteLine("输入错误!");
}
}
作用:实现字段属性的读和写!
至于为什么?我请问你,一个手机本来是一个完整的,你可以把它拆掉,也可以把它装回去,你为什么不会想,本来是一个好的手机干嘛用去拆掉,目的就是有必要才去去拆,也许我举的例子不恰当,但表达的意思你该明白了
通过 get, set 存取变量值 age, 避免直接读写变量而破坏封装性。