一。继承的概念
面向对象中的继承指类之间的父子关系
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.不同的继承方式可以改变继承成员的访问属性