一。继承的概念
面向对象中的继承指类之间的父子关系
1.子类拥有父类的所有成员变量和成员函数
2.子类就是一种特殊的父类
3.子类可以当作父类对象使用
4.子类可以拥有父类所没有的方法和属性
二。继承初体验
1.子类继承父类直接默认继承private
2.类中的protected
a。protect成员可以在子类中被访问,但不能在外界被访问
b。protected成员的访问权限介于public和private之间
#include <cstdlib>
#include <iostream>
using namespace std;
class Parent
{
protected:
int a;
public:
Parent()
{
a= 1000;
}
void Print()
{
cout <<"a = "<< a << endl;
}
};
class Child : public Parent
{
protected:
int b;
public:
void set(int a,int b)
{
this->a = a;
this->b = b;
}
};
int main(int argc, char *argv[])
{
Parent parent;
Child child;
child.set(1,2);
parent.Print();
child.Print();
// child.a = 10000;
cout << "Press the enter key to continue ...";
cin.get();
return EXIT_SUCCESS;
}
三。继承与访问级别
类成员访问级别设置的原则
1. 需要被外界访问的成员直接设置位public
2.只能在当前类中访问的成员设置为private
3.只能在当前类和子类中访问的成员设置为protected
公式:继承成员对外的访问属性
= Max{ 继承方式,父类成员访问级别}。
#include <cstdlib>
#include <iostream>
using namespace std;
class A
{
private:
int a;
protected:
int b;
public:
int c;
A()
{
a = 0;
b = 0;
c = 0;
}
void set(int a, int b, int c)
{
this->a = a;
this->b = b;
this->c = c;
}
};
class B : public A
{
public:
void print()
{
// cout<<"a = "<<a;
cout<<"b = "<<b;
cout<<"c = "<<endl;
}
};
class C : protected A
{
public:
void print()
{
// cout<<"a = "<<a;
cout<<"b = "<<b;
cout<<"c = "<<endl;
}
};
class D : private A
{
public:
void print()
{
// cout<<"a = "<<a;
cout<<"b = "<<b;
cout<<"c = "<<endl;
}
};
int main(int argc, char *argv[])
{
A aa;
B bb;
C cc;
D dd;
aa.c = 100;
bb.c = 100;
// cc.c = 100;
// dd.c = 100;
aa.set(1, 2, 3);
bb.set(10, 20, 30);
// cc.set(40, 50, 60);
// dd.set(70, 80, 90);
bb.print();
cc.print();
dd.print();
cout << "Press the enter key to continue ...";
cin.get();
return EXIT_SUCCESS;
}
五。小结
1.继承是一种类之间的关系,子类是一种特殊的父类
2.子类通过继承可以得到父类的所有成员
3.private 成员可以被子类继承但不能被子类访问
4.protected成员只能在当前类和子类中被访问
5.不同的继承方式可以改变继承成员的访问属性