为什么不将成员变量声明为public呢?
1.如果变量都是private,那么用户只能通过函数来获得这个变量,而不用考虑“.”或者“->”后面的东西用不用加上“()”。
2.使用函数,可以对变量进行精确地控制:有的变量不许访问,有的只读,有的可以读写,甚至是可以“只写”。而且在函数中,可以处理用户输入的不合理的参数。
3.封装性。封装性意味着,当你有新的想法需要修改时,只需要改变函数内部的实现细节。只要函数的接口没有改变,那么所有使用这个函数的代码就不需要做改变。而假如你使用的数据,那么整个代码的修改量就会大很多。简而言之,public意味着不封装,所有public下的东西都是别人用的,你不能轻易修改它们。
1.如果变量都是private,那么用户只能通过函数来获得这个变量,而不用考虑“.”或者“->”后面的东西用不用加上“()”。
2.使用函数,可以对变量进行精确地控制:有的变量不许访问,有的只读,有的可以读写,甚至是可以“只写”。而且在函数中,可以处理用户输入的不合理的参数。
3.封装性。封装性意味着,当你有新的想法需要修改时,只需要改变函数内部的实现细节。只要函数的接口没有改变,那么所有使用这个函数的代码就不需要做改变。而假如你使用的数据,那么整个代码的修改量就会大很多。简而言之,public意味着不封装,所有public下的东西都是别人用的,你不能轻易修改它们。
而对于protected,前两点依然适用。而对于第三点,可以从另一个角度来说明:如果public变量被取消那么所有使用它的代码都会被取消。对于protected,则破坏的是他的派生类。这都是无法衡量的。而如果private变量被取消,我们只要修改本类中调用这个变量的函数就行了。