学习日志(十七)
继承与派生
1.继承实质和权限的理解
说明:对于继承:就子类而言:除了构造和析构函数外,父类有什么,子类就有什么【数据成员+成
员函数】
继承方式只会增强父类的属性在子类当中的权限呈现
父类当中私有属性,能被继承,但是不能直接访问(不可访问)
2.继承权限理解区分
/* 此处为父类/
class Person{
private:
string address;
string Id;
protected:
string name;
int age;
public:
string sex;
void print() {
cout << name << "\t" << age <<endl;
}
3.公有继承:
子类的各种限制和父类中各种限制相同
class Malel: public Person{
/*注意继承方式*/
private:
string address;
string Id;
protected:
string name;
int age;
public:
string sex;
void print(){
cout<< name << "\t" << age << endl;
}
};
int main() {
/*创建对象*/
Malel m1;
m1.sex ="男";
/*公有继承可以访问*/
m1.print();
/* 公有继承可以访问*/
return 0;
}
4.保护继承:
父类中公有属性,在子类中呈现为保护属性【其他不变】
class Male2 : protected Person{
/*注意继承方式*/
private:
string address;
string Id;
protected:
string name;
int age; /*注意变化:公有=>保护 */
//public:
string sex;
void print(){
cout << name << "\t" << age << end1;
}
};
int main(){
/* 创建对象 */
Male1 m2;
m2.sex ="男";
m2.print();
/*回顾类知识点的权限问题:
权限是对外的限制,类中无权限可言
如本例中,想要实现访问,可以重新在 public 属性下定义函数取调用父类中的函数/访问成员并返回*/
return 0;
}
5.私有继承:
父类中的非私有属性,在子类中呈现为 私有属性【其他不变】
特点:私有继承:断子绝孙特性
已经是私有继承了,该类再被继承,其子类相当于无可用内容
class Male2: protected Person{
/*注意继承方式*/
private:
string address;
string Id; /*注意变化:保护=>私有*/
//protected:
string name;
int age;
//public: /* 注意变化:公有=> 私有 */
string sex;
void print(){
cout << name << "\t" << age << endl;
}
};
/*如果想要访问,就在父类中提供对应访问内容的接口*/