您的位置:首页 > 编程语言 > C语言/C++

[C++]继承

2016-09-29 10:59 190 查看
#include <iostream>using namespace std;//继承概念//面向对象程序设计有4个主要特点:抽象、封装、继承和多态性
//1、子类拥有父类的所有成员变量和成员函数 //2、子类可以拥有父类没有的方法和属性////3、子类就是一种特殊的父类//4、子类对象可以当作父类对象使用//派生类继承了基类的全部成员变量和成员方法(除了构造和析构之外的成员方法)//但是这些成员的访问属性,在派生过程中是可以调整的
//1)C++中的继承方式会影响子类的对外访问属性 //public继承:父类成员在子类中保持原有访问级别//private继承:父类成员在子类中变为private成员//protected继承:父类中public成员会变成protected//  父类中protected成员仍然为protected//  父类中private成员仍然为private//2)private成员在子类中依然存在,但是却无法访问到。不论种方式继承基类,//派生类都不能直接使用基类的私有成员 
////public继承不会改变父类对外访问属性//private继承会改变父类对外访问属性为private//protected继承会部分改变父类对外访问属性class Parent{private: int b;
protected: int c;
public: int a; Parent(){ a = 0; b = 0; c = 0; } void set(int a, int b, int c){ this->a = a; this->b = b; this->c = c; }};
class Child1:public Parent{public : void print(){ cout << "a: " << a << " b: err" << " c: " << c << endl; }};
class Child2 : protected Parent{public: void print(){ cout << "a: " << a << " b: err" << " c: " << c << endl; }};
class Child3 : private Parent{public: void print(){ cout << "a: " << a << " b: err"<< " c: " << c << endl; }};
int main(){ Child1 c1; Child2 c2; Child3 c3;
c1.a = 1; //c1.b = 1; err //c1.c = 1; err //c2.a = 1; err //c2.b = 1; err //c2.c = 1; err
//c3.a = 1; err //c3.b = 1; err //c3.c = 1; err
c1.set(1,2,3); c1.print();
//c2.set(4,5,6); err c2.print();
//c3.set(7,8,9); err c3.print(); getchar(); return 0;}

C++中子类对外访问属性表
 
父类成员访问级别




 
public
proteced
private
public
public
proteced
private
proteced
proteced
proteced
private
private
private
private
Private
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: