其实,按 private 的作用,面向对象的语言可以大致分两类:
一类以类为访问界限,如 C++,同一类的不同对象可以互相访问 private 成员
另一类以对象为访问界限,如 smalltalk,一个对象的 private 成员只有该对象自身才能访问,不同对象,即使同一类,也不能访问。
或者说,C++ 更像“面向类”的语言,而 smalltalk 是“原教旨主义”的面向对象语言。这种区别很微妙,也很有意思,需要在实践中细细品味……