16C++类的继承

来源:互联网 发布:mysql json 编辑:程序博客网 时间:2024/05/10 05:14

类的继承
function:C++ language Technology
author  :chinayaosir   QQ:44633197 
blog    :http://blog.csdn.net/chinayaosir
note    :禁止其它网站转载此文章
1.前言
继承的理解:
生活中的继承:1.接续前人未完的事业2.承继死者的遗产或权利。
编程中的继承:“继承”是面向对象软件技术当中的一个概念。
如果一个类A继承自另一个类B,就把这个A称为"B的子类",而把B称为"A的父类"。
继承可以使得子类具有父类的各种属性和方法,而不需要再次编写相同的代码。
2.定义
C++包括单一和多重继承两种方式,JAVA的多重继承是用interface来实现的
单一继承格式:class classid  :public baseid{}
多重继承格式:class classid  :public base1,public base2...
代码参考
//以人建立一个基类
class human{
public:
 human(){}
 void eatfood(){};
 bool uselanguage(){};
 bool usetool(){};
 void ishuman(){}; //if (uselanguage() && usetool()) then is human  
protected:
 std::string name;
 double height;
 double weight;
 
};
//从基类继承而来的派生类
class chinese :public human{
public:
 bool ischinese(){} //检查是否为中国人(gj=china)
 bool isyellowhuman(){} //检查是否为黄色人种(黄皮肤+黑头发)
protected:
 std::string gj; //国藉
 std::string hair;
 std::string facecolor;
};

多继承与单继承很类似。
class X {
public:
 X(int n);
 ~X();
 //…
};

class Y {
public:
 Y(double d);
 ~Y();
 //…
};
class Z : public X, public Y {
public:
 Z(int n, double d);
 ~Z();
 //…
};

派生类Z继承了两个基类X和Y所有的公有和保护成员,

由于两个基类有带参的构造函数,派生类构造函数应该在成员初始化表中调用它们:


3.单一继承与多重继承
单一继承就是基类和派生类的最常用的知识
多重继承用的非常的少,昼用不同的类进行组合设计,少用多重继承

因为多重继承在类的初始化,复制控制,再继承,各方面增加了好多的代码负担和控制难度

4.设计指导

4.1多重继承会加深类设计的复杂性和增加C++的错误率,建议少用多重继承
4.2类的设计中要知道区分"is-a"和"has-a"两种类设计模式
"is-a" :基类与派生类的public继承关系要符合"is-a"(是一种)的关系,"is-a"是类的继承设计方法
"has-a" :是指设计一个新类时,类的成员是由其它类组合而成的,"has-a"就是类的组合设计方法

原创粉丝点击