学习继承的一些总结

原创 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多态学习总结

一、多态产生的条件 存在继承关系; 存在方法重写; 要有父类引用指向子类对象。 示例代码:public class PolymorphismTest { public static void...
  • liuweiballack
  • liuweiballack
  • 2015年07月29日 00:17
  • 735

类与继承总结

一、类之间的关系 在面向对象技术中,类是数据和操作的集合,他们之间有三种主要关系:has-a,uses-a和is-a。 has-a表示类的包含关系,用于描述一个类由多个“部件类”构成。C++实现h...
  • Gao__Xiong
  • Gao__Xiong
  • 2016年03月11日 21:44
  • 447

c++ 类的继承与派生 知识点总结及例子

c++ 类的继承与派生 一、基本概念 1、类的继承,是新的类从已有类那里得到已有的特性。或从已有类产生新类的过程就是类的派生。原有的类称为基类或父类,产生的新类称为派生类或子类。 ...
  • wyl4138
  • wyl4138
  • 2016年05月19日 08:46
  • 452

Java封装,继承和多态总结

三大支柱面向对象程序设计的三大支柱是封装,继承和多态。 封装:把对象的属性和操作(或服务)结合为一个独立的整体,并尽可能隐藏对象的内部实现细节。适当的封装可以让程式码更容易理解和维护,也加强了程式...
  • DeMonliuhui
  • DeMonliuhui
  • 2017年04月18日 22:17
  • 614

继承和多态的难点总结

继承以后子类可以得到什么: 子类拥有父类非private的属性和方法子类可以添加自己的方法和属性,即对父类进行扩展子类可以重新定义父类的方法,即多态里面的覆盖,后面会详述 关于构造函数: 构造函数...
  • wangjinyang_123
  • wangjinyang_123
  • 2014年12月22日 23:01
  • 626

C#中的继承封装和多态知识点总结

一、  封装: 封装是实现面向对象程序设计的第一步,封装就是将数据或函数等集合在一个个的单元中(我们称之为类)。被封装的对象通常被称为抽象数据类型。 面向对象程序设计中一般以类作为数据封装...
  • xjc1278003262
  • xjc1278003262
  • 2013年03月01日 10:29
  • 2766

总结sizeof 的问题

1  sizeof是C/C++中的一个操作符(operator),简单的说其作用就是返回一个对象或者类型所占的内存字节数。这是一个依赖于编译系统的值...
  • u010537526
  • u010537526
  • 2014年11月07日 19:43
  • 383

JAVA继承总结

JAVA继承总结 Java中的继承作为Java面向对象三大特性之一,在知识点上而言,还是很多的,而且java的继承与覆盖基本是java笔试中常出的题,也比较绕,下面欧#柏泰#克和大家一起来学习下...
  • javaniuniu
  • javaniuniu
  • 2017年04月14日 16:42
  • 349

十月学习总结 大学的第一个月

来到烟台两个月了,而真
  • zp___waj
  • zp___waj
  • 2014年11月03日 11:34
  • 2857

JAVA 学习 自我总结

学习总结: 孔子曰学而时习之 不亦悦乎 。学习了新的东西,一定要及时练习和总结,并多次回想记忆,这样才能将知识记忆的牢固; 之前我学习东西只知道贪多,想一口吃一个胖子;但是每次都是事倍功半,这样又...
  • u010582345
  • u010582345
  • 2016年04月08日 23:58
  • 345
内容举报
返回顶部
收藏助手
不良信息举报
您举报文章:学习继承的一些总结
举报原因:
原因补充:

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