首页 诗词 字典 板报 句子 名言 友答 励志 学校 网站地图
当前位置: 首页 > 教程频道 > 开发语言 > C++ >

种的属性——数据成员,为什么要设置成私有的

2012-09-23 
类的属性——数据成员,为什么要设置成私有的?突然想起来2个月前面试这家公司的时候,老板曾问过我这样一个问

类的属性——数据成员,为什么要设置成私有的?
突然想起来2个月前面试这家公司的时候,老板曾问过我这样一个问题。


当时是老板让我谈谈对于面向对象的理解,我就随便说了一通,说类都有自己的属性,这些属性通过数据成员来体现,一般都设为private的。

老板就问,为什么要设成私有的?公有的,大家都可以用不好么??

当时我就有点语塞了,就说属性不可以被被随便修改,必须是成员函数构造函数才能修改。老板又问,为什么还要额外写一些成员函数去修改数据成员呢,直接改不是更好,那你告诉我,为什么不能被外界直接访问?。..


记得当时我也没回答出来,现在想起来了,求问一下,目测应该也不是三言两语的事情哦。

[解决办法]
因为对于使用这个类的人你不需要了解内部实现,封装隐藏起来
[解决办法]
把可以让别人访问和修改的,以接口的形式公开,接口的好处在于,别人依赖你的接口,而不是依赖你具体的实现,那么你修改了这个接口的实现,别人那边不需要改,举个例子。

你的类中有一个方法int getCount(){return this->count;};
别人某个地方使用了你这个getCount, 然后有一天你改了实现例如{return this->count * 2;};别人的代码不需要改就可以编译通过。
[解决办法]
楼上解释不错,只因为这个原因?
[解决办法]
也防止类的属性被随意修改阿
[解决办法]
你可以直接告诉他,把你的工资拿出来大家一起用不是很好吗??
[解决办法]
为了封装,为了分模块,为了用接口把作者和用户隔离开来,为了让大家只专心自己那一块就好不用去管自己不该管的
你要能力强到可以用汇编语言写出任何大程序,什么封装继承多态你都不用管——等你一走,这些程序全部作废,因为除你之外谁都看不懂
[解决办法]

探讨

为了封装,为了分模块,为了用接口把作者和用户隔离开来,为了让大家只专心自己那一块就好不用去管自己不该管的

[解决办法]
成员变量私有,成员函数公有。

将操作集约化,以后出了问题,容易把控或修改。
[解决办法]
这是封装,内部透明,对外不透明。
我可以给你接口访问,但你不能直接访问该属性。
你并不知道访问是如何实现的。
[解决办法]
两个字“封装”
[解决办法]
之所以设为private,就是不想让外部的代码直接调用。比如一个类中有10个成员变量,其中有9个是用于保存中间状态的,根本不需向外部输出,另外一个变量需要根据这个9个变量的值,才可以得出结果...还有私有成员函数,只供内部的其它成员函数调用...
[解决办法]
探讨

你可以直接告诉他,把你的工资拿出来大家一起用不是很好吗??

[解决办法]
这种问题只有老板才问的出来,按按按按哪,随便一逛就逛到才导你的帖子,缘分

[解决办法]
不就是封装么?

[解决办法]
这样可以类的用户不关心类的实现,只使用接口就行了,如果类的实现变了,但是接口没变,类的用户就可以不用修改自己的代码,程序也能运行。
[解决办法]
封装,就这么简单
[解决办法]
老实说,要理解这个要满足下面其中一个条件:

1.经验
2.天份
3.看书

[解决办法]
睡不着,再说两句:
"类都有自己的属性"
这句话在C++中是不对的.
属性是一种抽象. 成员函数和成员变量等类的成员是它的实现. 
c++没有像其他语言一样类的属性这一概念.但是可以实现这个.

同样,接口也是类似的.

热点排行