继承的一般语法为: class 派生类名:[继承方式] 基类名{
派生类新增加的成员
};
public、protected、private 修饰类的成员继承方式限定了基类成员在派生类中访问权限,包括public,private,protected。这是个可选项,如若不指定,则默认为private(成员变量和成员函数默认也是 private)。 类的成员访问权限依次是public->protected->private。public可通过对象来访问,private不可以。 protected与private类似,也不可以通过对象访问。但是当存在继承关系时,protected 和 private 就不一样了:基类中的 protected 成员可以在派生类中使用,而基类中的 private 成员不能在派生类中使用。 public、protected、private 指定继承方式不同的继承方式会影响基类成员在派生类中的访问权限。 public方式: 基类所有的public成员在派生类中是public属性 基类所有的protetcd成员在派生类中是protected属性 基类所有的private成员在派生类中是private属性 protected方式: 基类所有的public成员在派生类中是protected属性 基类所有的protetcd成员在派生类中是protected属性 基类所有的private成员在派生类中不可使用 private方式: 基类所有的public成员在派生类中是private属性 基类所有的protetcd成员在派生类中是private属性 基类所有的private成员在派生类中不可使用 分析: 1)基类成员在派生类中访问权限不得高于继承方式中指定的权限。例如,当继承方式为protected时,那么基类成员在派生类中的访问最高权限最高也为priotected,高于protected的会降级为protected,但低于protected不会升级。再例如,当继承方式为public时,那么基类成员在派生类中的访问权限将保持不变。 也就是说,继承方式中的public,protected,private是用来指明基类成员在派生类中最高访问权限的。 2)不管继承方式如何,基类中private成员在派生类始终不能使用。 3)如果希望基类的成员能够被派生类继承并且毫无障碍的使用,那么成员只能声明为public或protected。只有那些不希望在派生类中使用的成员才声明为private。 4)如果希望基类的成员既不向外暴露(不能通过对象访问),还能再派生类中使用,那么只能声明为protected。 由于 private 和 protected 继承方式会改变基类成员在派生类中的访问权限,导致继承关系复杂,所以实际开发中我们一般使用 public。 改变访问权限 使用using关键字可以改变基类成员再派生类中的访问权限。例如将public改为private,将protected改为public。 注意,using只能改变基类成员中的public和protected成员的访问权限,不能改变private成员的访问权限,因为基类的private成员再派生类中是不可见的,根本不可能使用,所以基类的private成员再派生类中无论如何都不可能访问。
|
|
来自: 昵称70747151 > 《待分类》