你现在知道在定义类的访间属性时可用的选择项,你希望使用这些类定义子类。你知道在类继承上这些属性所具有的效果,但是你如何决定到底应该使用哪一个呢?
这里没有死板和现成的规则,你选择的访问属性取决于在将来你想用类做些什么事情,然而也有一些值得你考虑的准则,明白们都遵循基本的面向对象原则:组成类的外部接口的那些方法应该声明为public.只要在派生类中没有覆盖这个方法的定义,公有的基类方法将被继承到派生类,并且作为派生类的外部接口的一部分完全有效。你通常不应该把数据成员设置为公有的。除非它们打算作为通用的常数使用。
如果你希望其他人把你的类作为基类使用,若你坚持把数据成员声明为private并且提供gublic方法对它们进行访问和处理,你的类将会更加安全。按照这种方法你可以控制派生类对象如何影响基类的数据成员。
把基类成员声明为protected,将允许它们被同一个包中的其他类访另一个包中的类直接地对它进行访问。protected的基类成员被子类继承,因此在派生类的实现中可以使用它们。有一个包,当你希望在同一个包中访问任何类的数据成员不受约束,例如,这些类之间以一种紧密的关系进行操作,但是限制其他包中的子类进行自由地访问时,你就可以使用protected选项。
省略类成员的访问属性可以使这个成员对同一个包中的其他类直接可用,同时阻止它被其他包中的子类继承,当从另一个包中观察它时,其效果如同private。