目录
1. 什么是继承?
继承是面向对象的三大特征之一
继承可以理解为一个类从另一个类获取成员变量和成员函数的过程。
例如类 B 继承于类 A,那么 B 就拥有 A 的成员变量和成员函数。被继承的类称为父类或基类,继承的类称为子类或派生类。
2. 继承的基本语法
class 类名:权限 父类名
//孩子有父亲的特点,并且孩子还有自身独特的特点
//父类,也称为基类
class BasePage
{
public:
void header()
{
cout << "首页、公开课、登录、注册..." << endl;
}
void footer()
{
cout << "帮助中心、交流合作、站内地图" << endl;
}
void left()
{
cout << "分类" << endl;
}
void content()
{
cout << "java学科视频" << endl;
}
};
//子类,也成为派生类
class Java :public BasePage
{
public:
void content()
{
cout << "java学科视频" << endl;
}
};
class CPP :public BasePage
{
public:
void content()
{
cout << "CPP学科视频" << endl;
}
};
void Test1()
{
Java a;
cout << "Java网站:" << endl;
a.header();
a.footer();
a.left();
a.content();
}
void Test2()
{
CPP a;
cout << "CPP网站:" << endl;
a.header();
a.footer();
a.left();
a.content();
}
int main()
{
Test1();
cout << "--------------------" << endl;
Test2();
return 0;
}
我们继承了父类中的成员函数和成员变量,并且子类中也具有它们独特的性质。
3. 继承方式
C++中的继承分为三种:1. public继承 2. protect继承 3. private继承
3.1 public继承
//父类
class A
{
public:
int a;
protected:
int b;
private:
int c;
};
//1.公共继承
class Son1 :public A
{
public:
void func()
{
a = 10; //父类的公共权限 在子类仍是公共权限
b = 20; //父类的保护权限 在子类仍是保护权限
c = 30; //父类的私有权限 子类访问不了
}
};
void Test1()
{
Son1 s;
cout << s.a << " " << s.b << endl; //保护权限在类外无法访问
cout << s.c << endl;
}
我们可以发现当是public继承时:
成员函数 | 继承前权限 | 继承后权限 |
a | public | public |
b | protected | protected |
c | private | private |
如果是公共继承时,则子类继承的成员权限仍和父类相同,但子类不可以访问父类中的private成员
3.2 protected继承
class A
{
public:
int a;
protected:
int b;
private:
int c;
};
//2.保护继承
class Son2 :protected A
{
public:
void func()
{
a = 10; //父类的公共权限 在子类是保护权限
b = 20; //父类的保护权限 在子类仍是保护权限
c = 30; //父类的私有权限 子类访问不了
}
};
void Test2()
{
Son1 s;
cout << s.a << " " << s.b << endl; //保护权限在类外无法访问
cout << s.c << endl;
}
我们可以发现当是protected继承时:
成员函数 | 继承前权限 | 继承后权限 |
a | public</ |