继承

面对对象的三个主要特征: 封装,继承,多态。

而继承,通过继承机制,可以利用已有的数据或者方法来定义一个新的数据类型。

父类:已经存在的数据或者方法,叫做基类。

子类:由已经存在的类派生出来的新类,叫做派生类。

1 class a{
2 
3 };
4 
5 class b : public a{
6 
7 };

对于上面这两个类,a是基类,b是派生类,a是b的父类,b是a的子类。

注意:

1.父类的所有成员变量和成员函数,子类都拷贝了一份。但是父类的私有成员子类是没法访问的,父类的保护成员可以在子类中访问,当不可以在外部访问。

2.先构建父类,在构建子类,但会先析构子类,再析构父类。

3.在子类的初始化列表中构建父类,可以通过子类构造函数传递值给父类的方式初始化父类成员变量。

4.子类要访问隐藏的成员变量或方法,必须明确指出父类:例如Child.Father::show();

隐藏:如果子类定义了和父类一样的成员函数或者成员变量,子类会自动隐藏父类的相同版本。(重载)

重载和隐藏的区别:() 

隐藏是父子类之间,不在同一个作用域,而重载是相同作用域

重载是函数名相同参数列表不同,而隐藏必须是函数名相同,参数列表也相同。

 

对于继承,有三种继承的方式:

1.公有继承:public,子类不会改变任何的访问限定,父类的私有成员子类没法访问,父类的公有成员子类也是公有的,父类的保护成员在子类也是保护的。

2.私有继承:private,父类的私有成员变量,子类没办法访问;父类的公有成员变量,在子类中变成私有;父类的保护成员变量在子类中变成私有。即父类的所有公有和保护成员,在子类中,都是私有。

3.保护继承:protected,父类的私有成员不可访问,父类的公有和保护都变成子类的保护。

 

posted @ 2018-02-10 13:26  ouyang_wsgwz  阅读(132)  评论(0编辑  收藏  举报