类的属性——数据成员,为什么要设置成私有的?
突然想起来2个月前面试这家公司的时候,老板曾问过我这样一个问题。
当时是老板让我谈谈对于面向对象的理解,我就随便说了一通,说类都有自己的属性,这些属性通过数据成员来体现,一般都设为private的。
老板就问,为什么要设成私有的?公有的,大家都可以用不好么??
当时我就有点语塞了,就说属性不可以被被随便修改,必须是成员函数构造函数才能修改。老板又问,为什么还要额外写一些成员函数去修改数据成员呢,直接改不是更好,那你告诉我,为什么不能被外界直接访问?。..
记得当时我也没回答出来,现在想起来了,求问一下,目测应该也不是三言两语的事情哦。
[解决办法]
因为对于使用这个类的人你不需要了解内部实现,封装隐藏起来
[解决办法]
把可以让别人访问和修改的,以接口的形式公开,接口的好处在于,别人依赖你的接口,而不是依赖你具体的实现,那么你修改了这个接口的实现,别人那边不需要改,举个例子。
你的类中有一个方法int getCount(){return this->count;};
别人某个地方使用了你这个getCount, 然后有一天你改了实现例如{return this->count * 2;};别人的代码不需要改就可以编译通过。
[解决办法]
楼上解释不错,只因为这个原因?
[解决办法]
也防止类的属性被随意修改阿
[解决办法]
你可以直接告诉他,把你的工资拿出来大家一起用不是很好吗??
[解决办法]
为了封装,为了分模块,为了用接口把作者和用户隔离开来,为了让大家只专心自己那一块就好不用去管自己不该管的
你要能力强到可以用汇编语言写出任何大程序,什么封装继承多态你都不用管——等你一走,这些程序全部作废,因为除你之外谁都看不懂
[解决办法]