CPP学习之——公有型、保护型和私有型及公有派生的成员(12.5-8)

一 概念

本节课主要讲述公有型、保护型和私有型相关的知识点:

  • 公有型、保护型和私有型
  • 公有派生的共有成员
  • 共有派生的保护成员
  • 公有派生的私有成员

二 公有型、保护型和私有型

2.1 代码

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
#include<iostream>
using namespace std;
class father
{
protected:
int fatherHeight,fatherWeight;
public:
void setFatherHeight(int fathersHeight){fatherHeight=fathersHeight;}
void setFatherWeight(int fathersWeight){fatherWeight=fathersWeight;}
void showFatherHeightWeight(){
cout<<"父亲身高="<<fatherHeight<<"\t"<<"父亲体重="<<fatherWeight<<endl;
}
};
class Son:public father
{
private:
int SonWidth,SonLength;
public:
void setSonWidth(int sonsWidth){SonWidth=sonsWidth;}
void setSonLength(int sonsLength){SonLength=sonsLength;}
void showSonData()
{
cout<<"儿子肩宽="<<SonWidth<<"\t"<<"儿子臂长="<<SonLength<<endl;
}
void show()
{
cout<<"父亲身高="<<fatherHeight<<"\t"<<"父亲体重="<<fatherWeight<<endl;
cout<<"儿子肩宽="<<SonWidth<<"\t"<<"儿子臂长="<<SonLength<<endl;
}

};
using namespace std;
int main()
{
Son a;
a.setFatherHeight(160);
a.setFatherWeight(60);
a.setSonWidth(60);
a.setSonLength(80);
a.show();
return 0;
}

2.2 输出结果

1
2
父亲身高=160	父亲体重=60
儿子肩宽=60 儿子臂长=80

2.3 代码说明

  • 类father中的成员fatherHeight、fatherWeight修饰符:private、protected、public

三 公有派生的共有成员

3.1 代码

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
#include<iostream>
using namespace std;
class father
{
public:
void room(){cout<<"父亲的大房子,我可以访问"<<endl;}
};
class Son:public father
{
};
int main()
{
Son a;
a.room();
return 0;
}

3.2 代码说明

  • 类father中修饰符为public,子类可以直接访问

四 共有派生的保护成员

4.1 代码

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
#include<iostream>
using namespace std;
class father
{
protected:
void room(){cout<<"父亲的大房子,我可以访问"<<endl;}
};
class Son:public father
{
public:
void enjoy(){room();}
};
int main()
{
Son a;
//a.room();
a.enjoy();
return 0;
}

4.2 代码说明

  • 父类father中的protected方法,子类不能直接访问,通过子类的public方法,可以访问

五 公有派生的私有成员

5.1 代码

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
#include<iostream>
using namespace std;
class father
{
private:
void room(){cout<<"父亲的大房子,我可以访问"<<endl;}
};
class Son:public father
{
public:
void enjoy(){room();}
};
int main()
{
Son a;
//a.room();
a.enjoy();
return 0;
}

5.2 代码说明

  • 父类father中的私有方法,room,子类完全不能访问