这是因为所谓的封装性。封装性是说,对于类内部的数据和实现,外部不可见。仅能够通过开放的接口来使用。
在你这个例子里确实看不出差异。但是假设这个情况:比如你要对长度做限制,因为首先不可能是负值,然后一定也有一个最小值。那么效果就可以体现了。你在公开函数中是可以写判断/意外等等情况的。但是如果你公开了成员变量,那么外部就可以设置为任意值。而如果你的其他函数是基于这个判断来写的,最终就会导致出错。
私有成员,只能本类的对象才能访问。
防止其继承类对其进行了改变。
基类的私有成员,派生类的成员和派生类的对象都无法访问了,这样做既可以隐藏基类成员的属性,提升了安全性,同时又提供了开放的接口,让其他类调用基类的函数。这就是面向对象里封装的概念,符合现代软件开发思想。
设置成公有,会让客户端直接访问成员变量 ,故对不允许客户直接操作的成员变量应设置为私有 并可提供接口访问该变量。