[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++中子类对外访问属性表
//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 |
相关文章推荐
- JAVA 的interface观念 与C++ 多重继承的比较
- 《Modern C++ Design》Loki库读解三:多继承的改良
- C++多继承
- C++特性探寻-继承、成员函数、this指针
- C++学习笔记-类的继承(派生类)
- C++箴言:接口继承和实现继承
- C++程序设计——继承
- 人与继承的C++实现
- JAVA如何利用接口制造类似于C++的多继承
- c++入门学习笔记继承
- C++继承体系中名字遮挡问题
- 学习C++中的继承
- C++单继承
- MSN上关于C++多重继承和多态的聊天记录
- C++ Boost 之Python(继承)
- 用于继承的 singleton (在C++中)
- 在C++中禁止类继承
- C++多继承中二义性问题--虚基类
- 多继承实现COM类中的"菱形问题" C++也有一样的菱形问题
- C++ FAQ Lite[19]--继承(基础)(更新)