学习继承的一些总结

原创 2013年12月04日 12:59:11

作为新手,想必可能有和我遇到同样问题的。希望这篇文章对大家有帮助,也希望这篇文章大家能对我有帮助。学习继承,我主要总结了关于成员可见性的问题。。

  作为继承,主要有三种:公有继承,私有继承(默认继承方式),保护继承。
公有继承:
基类中的公有成员在派生类中仍公有;
基类中的保护成员在派生类中仍保护;
基类中的私有成员在派生类中不可见,仅基类可见。

私有继承:
基类中的公有成员在派生类中为私有;
基类中的保护成员在派生类中为私有;
基类中的私有成员在派生类中不可见,仅基类可见。

保护继承:
基类中的公有成员在派生类中为保护;
基类中的保护成员在派生类中为保护;
基类中的私有成员在派生类中不可见,仅基类可见。
通过继承机制,派生类继承了基类的成员,所继承的成员只属于派生类,即基类和派生类各有一份这样的成员,这点很重要。
接下来,我们不慌看继承,回到类来看:(个人理解所谓可见性即是调用权限!)

#include《iostream》
using namespace std;
class A{
public:
void dump()const{....}
protected:
void set(){......}
private:
void get(){.......}
};
int main()
{
  A a;
a.dump();//ok!
/* a.set(); */      //wrong!
/* a.get(); */     //wrong!
return 0;
}
函数set()和get()在main函数中都不能调用,说明它们的调用权限仅属于类,即对main不可见。同理可知dump().

下面我们以公有继承为例:

#include《iostream》
using namespace std;
class A{
public:
void dump()const{....}
protected:
void get_x(){x++;}
private:
int x;
};
class B:public A
{
public:
void get(){ get_x();}
/* void get_y(){ y=x;} */
void compare(A &a){ a.get_x();}
protected:
void set(){...}
private:
int y;
};
int main()
{
  B b;
  A a;
/* b.get_y(); */ //wrong! x在B类不可见,不能访问.

b.get();//ok! 由于x是私有的,所以派生类不可见,但能间接访问.

/* b.compare(a); */  //wrong!这个是我之前一直没想通的,但是现在清楚了。因为对象a调用的get_x()权限仅属于A,所以对B不可见。学习继承的一些总结

相关文章推荐

JAVA学习笔记之-封装,继承,多态 总结

1、封装 封装:把客观事物封装成抽象的类,并且类可以把自己的数据和方法只让可信的类或者对象操作,对不可信的进行信息隐藏。是软件设计模块化、软件复用和软件维护的一个基础。 属性的封装:java中类的...

java学习总结(16.06.10~16.06.17)面向对象的三大特征——封装、继承、多态

特征一:封装 封装,简单来说就是将数据和方法包装在类这种特殊的数据类型中。具备封装性(Encapsulation)的面向对象程序设计隐藏了某一方法的具体运行步骤,取而代之的是通过消息传递机制发送消息给...

学习一天继承总结

---------------------- android培训、java培训、期待与您交流! ---------------------- 继承(extends): 1,提高了代码的复用性 2...
  • waVicky
  • waVicky
  • 2012年06月04日 23:45
  • 104

学习总结1[java](final、继承和组合)

有始就要有终,为今天的学习画个句号。         今天学习了java中final关键字、继承和组合:                 1.final关键字是“最终”的意思,它有特殊的用途,(1)如...

android 自定义View学习总结-继承自ViewGroup

一、android 自定义View学习总结-继承自ViewGroupandroid中自定义view可以有继承view,继承viewgroup,继承系统的View(如LinearLayout,Frame...

Maven学习总结(5)——聚合与继承

Maven学习总结(五)——聚合与继承 一、聚合   如果我们想一次构建多个项目模块,那我们就需要对多个项目模块进行聚合 1.1、聚合配置代码 1 modules> 2 m...

JavaSE视频学习阶段性总结 四(继承)

一、继承 1.继承的背景  1)继承的由来: Java继承是使用已存在的类的定义作为基础建立新类的技术,新类的定义可以增加新的数据或新的功能,也可以用父类的功能,但不能选择性地继承父类。这种技术...

maven 学习总结(五)——聚合与继承

一、聚合  如果我们想一次构建多个项目模块,那我们就需要对多个项目模块进行聚合1.1、聚合配置代码 模块一 模块二 模块三   例如:对项目的Hello、...

JavaScript继承学习小总结

JS的继承主要包括三种类型,原型链继承、借用构造函数继承以及组合继承,另外还有三种可供选择的继承方式,原型式继承、寄生式继承、寄生组合式继承。(本篇博客是通过对《JavaScript高级程序设计》-继...
  • enen1
  • enen1
  • 2015年05月31日 16:43
  • 210

C/C++日常学习总结(第四篇)共同基类产生的二义性和继承与组合的区别

1.共同基类派生产生的二义性及解决办法
内容举报
返回顶部
收藏助手
不良信息举报
您举报文章:学习继承的一些总结
举报原因:
原因补充:

(最多只允许输入30个字)