一.类与类之间的关系
分为以下3种:
class A {
public:
int a;
void funcA() {
cout << "funcA()" << endl;
}
};
//1.类B拥有类A的成员变量,B has A,类B依赖于类A
class B {
public:
void funcB() {
cout << "funcB()" << endl;
}
A a;//定义A类变量
};
//2.类C的成员方法需要类A的形参,C use A;
class C
{
public:
void funcC1(A *a) {//用到类A的形参
cout << "funcC1()" << endl;
}
void funcC2() {
cout << "funcC2()" << endl;
}
};
//3.D继承于A
class D :public A
{
public:
void funcD() {
//继承A,可以调用类A中public中函数和变量
//D继承于A,D is A,继承的耦合度非常高。
cout << a << endl;
}
};
二.继承
继承:基于可重用性方式,所设计。减少代码冗余,便于理解。
使用如下:
class Student1{
public:
Student1(int id, string name) {
this->id = id;
this->name = name;
}
void printS() {
cout << "id=" << id << ",name=" << name << endl;
}
private:
int id;
string name;
};
//通过继承,创建一个新的学生类,增加score功能
class Student2 :public Student1//继承方法
{
public:
Student2(int id, string name, int score) :Student1(id,name)//通过父类构造函数
{
this->score = score;
}
void printS() {
Student1::printS();//调用父类中的方法
cout << "score=" << this-> score << endl;
}
private:
int score;
};
int main() {
Student2 st2(1, "shadiao", 688);
st2.printS();
}
结果:
三.有关继承的名词定义(基类[父类]、派生类)
基类(父类)、派生类(子类)。
基类与父类分配的空间是分开的。
四.类的继承方式
权限public、protected、private在三种继承之后,权限发生变化。见下图:
公有继承
公有继承结论:
1. 在【public继承】,【类内部、外部可以】访问父类中【pubic变量】。
2. 在【public继承】,【类内部、外部都不可以】访问父类中【private变量】。
3. 在【public继承】,【类内部可以、类的外部不可用】访问父类中【protected变量】。
保护继承
保护继承总结:
1. 在【protected继承】,【类内部可以、外部不可以】访问父类中【pubic变量】。
2. 在【protected继承】,【类内部、外部都不可以】访问父类中【private变量】。
3. 在【protected继承】,【类内部可以、类的外部不可以】访问父类中【protected变量】。
私有继承
私有继承总结:
1. 在【private继承】,【类内部可以、外部不可以】访问父类中【pubic变量】。
2. 在【private继承】,【类内部、外部都不可以】访问父类中【private变量】。
3. 在【private继承】,【类内部可以、类的外部不可以】访问父类中【protected变量】。