继承修饰符public、private、protected

 1.   private:只能由1.该类中的函数、2.其友元函数访问。不能被任何其他访问,该类的对象也不能访问。

 2.   protected:可以被1.该类中的函数、2.子类的函数、以及3.其友元函数访问。但不能被该类的对象访问。

 3.   public:可以被1.该类中的函数、2.子类的函数、3.其友元函数访问,也可以由4.该类的对象访问。

 4.   注:友元函数包括3种:设为友元的普通的非成员函数;设为友元的其他类的成员函数;设为友元类中的所有成员  函数。

        另外:类的继承后方法属性变化。

 5.   private 属性不能够被继承。使用private继承,父类的protected和public属性在子类中变为private;

 6.   使用protected继承,父类的protected和public属性在子类中变为protected;

 7.   使用public继承,父类中的protected和public属性不发生改变; 

 8.   如下所示:               

  public:     protected:  private:
public继承 public  protected不可用 
protected继承 protected   protected   不可用 
 private继承  private     private  不可用 


12.    protected继承和private继承能降低访问权限。


       而在C++中继承主要有三种关系:publicprotectedprivate。这三种继承关系中public继承是最为常用的一种继承关系,private继承是最少见的继承关系。

1. public

        public继承是一种接口继承,根据面向对象中的关系而言就是,派生类可以代替基类完成基类接口所声明的行为.

从语法角度上来说,public继承会保留基类中成员(包括函数和变量等)的可见性不变,也就是说,基类的public成员为派生类的public成员,基类的protected成员为派生类的protected成员。

2. protected

        从语义角度上来说,protected继承是一种实现继承。

从语法角度上来说,protected继承会将基类中的public可见性的成员修改成为protected可见性,相当于在派生类中引入了protected成员,这样一来在派生类中同样还是可以调用基类的protected和public成员,派生类的派生类就也可以调用被protected继承的基类的protected和public成员。

例如:
  

class CSample1 {
protected:
    void printProtected() {}
public:
void printPublic() {}
};
class CSample2 : protected CSample1 {};
class CSample3 : public CSample2 {
   void print3() {
      printProtected();
      printPublic();
}
};
3. private
        从语义角度上来说,private继承是一种实现继承,private继承会将基类中的public和protected可见性的成员修改成为private可见性,这样一来虽然派生类中同样还是可以调用基类的protected和public成员,但是在派生类的派生类就不可以再调用被private继承的基类的成员了。
class CSample1 {
protected:
  void printProtected() {}
public:
  void printPublic() {}
};
class CSample2 : private CSample1 {};
class CSample3 : public CSample2 {
  void print3() {
    printProtected(); // 编译错误,不可以调用该函数
    printPublic();    // 编译错误,不可以调用该函数
  }
};


  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值