惊艳的继承_14

时间:2021-11-21 19:28:39

一。继承的概念

  面向对象中的继承指类之间的父子关系

   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  

     惊艳的继承_14

  公式:继承成员对外的访问属性

      = 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.不同的继承方式可以改变继承成员的访问属性