面向对象中的继承指类之间的父子关系;
子类拥有父类的所有成员变量和成员函数;
子类就是一种特殊的父类;
子类对象可以当作父类对象使用;
子类可以拥有父类没有的方法和属性;
{
private:
int a;
public:
Parent()
{
a = 1000;
}
void print()
{
cout<<"a = "<<a<<endl;
}
};
class Child : Parent//child继承parent
{
};
C++中的访问级别与继承:
继承时的访问级别设定会影响到成员的访问级别;
注意:
1.
C++
中
class
的继承默认为
private
继承;
2.
private
继承的子类拥有父类的所有成员;
3.
private
继承使得父类的所有成员在子类中变为
private
成员;
C++
中的访问级别与继承:
public
继承:
父类成员在子类中保持原有访问级别;
private
继承:
父类成员在子类中变为
private
成员;
//为子类添加新成员
{
private:
int b;
public:
void set(int a, int b)
{
this->a = a;//编译错误,此处不能访问
this->b = b;
}
};
类成员访问级别设置的原则:
需要被外界访问的成员直接设置为
public;
只能在当前类中访问的成员设置为
private;
只能在当前类和子类中访问的成员设置为
protected;
#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继承
{
public:
void print()
{
cout<<"a = "<<a;//error
cout<<"b = "<<b;
cout<<"c = "<<endl;
}
};
class C : protected A//protected继承
{
public:
void print()
{
cout<<"a = "<<a;//error
cout<<"b = "<<b;
cout<<"c = "<<endl;
}
};
class D : private A//private继承
{
public:
void print()
{
cout<<"a = "<<a;//error
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;//error
dd.c = 100;//error
aa.set(1, 2, 3);
bb.set(10, 20, 30);
cc.set(40, 50, 60);//error
dd.set(70, 80, 90);//error
bb.print();
cc.print();
dd.print();
cout << "Press the enter key to continue ...";
cin.get();
return EXIT_SUCCESS;
}
#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继承
{
public:
void print()
{
cout<<"a = "<<a;//error
cout<<"b = "<<b;
cout<<"c = "<<endl;
}
};
class C : protected A//protected继承
{
public:
void print()
{
cout<<"a = "<<a;//error
cout<<"b = "<<b;
cout<<"c = "<<endl;
}
};
class D : private A//private继承
{
public:
void print()
{
cout<<"a = "<<a;//error
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;//error
dd.c = 100;//error
aa.set(1, 2, 3);
bb.set(10, 20, 30);
cc.set(40, 50, 60);//error
dd.set(70, 80, 90);//error
bb.print();
cc.print();
dd.print();
cout << "Press the enter key to continue ...";
cin.get();
return EXIT_SUCCESS;
}
继承是一种类之间的关系,子类是一种特殊的父类;
子类通过继承可以得到父类的所有成员;
private成员可以被子类继承但不能被子类访问;
protected成员只能在当前类和子类中被访问;
不同的继承方式可能改变继承成员的访问属性;