概述
/*面向对象程序设计:继承成员访问控制机制
---------------------------------------------
成员访问控制 | 类自身 | 派生类 | 其它类 |
---------------------------------------------
private | 可以访问| 不能访问| 不能访问|
protected| 可以访问| 可以访问| 不能访问|
public | 可以访问| 可以访问| 可以访问|
---------------------------------------------*/
/*在继承中加访问控制机制
-------------------------------------------------------
基类成员访问控制 | 继承访问控制 | 在派生类中的访问控制|
-------------------------------------------------------
public | | public |
protected | public | protected |
private | | 不可访问 |
-------------------------------------------------------
public | | protected |
protected | protected | protected |
private | | 不可访问 |
-------------------------------------------------------
public | | private |
protected | private | private |
private | | 不可访问 |
-------------------------------------------------------*/
#include<stdio.h>
#include<iostream.h>
//基类class1
class class1
{
public:
friend void f1()
{
cout<<"class1 f1"<<endl;
};
void f4()
{
f1();//合法,类自身来访问公有public、保护protected、私有private成员以及数据是畅通无阻的
f2();//合法
f3();//合法
};
protected:
void f2();
private:
void f3();
};
//派生类class2继承基类class1,默认为private方式
class class2:class1
{
public:
void ff1()
{
f1();//合法,派生类只能访问基类的公有public、保护proteced的成员。
f2();
f4();
//f3();//非法,派生类不能访问基类(父类)的私有成员,一个类的私有成员是不被继承的。
}; //class2 只能继承class1的公有的、保护的成员,是不能继承class1有私有成员的。
protected:
void ff2();
private:
void ff3();
};
//其它类
class calss3
{
public:
void fff1()
{
f1();//合法,其它类class3只能访问其它类class1的公有(public)的成员
}
protected:
private:
};
//派生类class4继承基类class1,proteced方式
class class4:protected class1
{
public:
void ff1()
{
f1();//
f2();
f4();
//f3();//非法
}; //
void ff4()
{
//f3();//非法
};
protected:
void ff2();
private:
void ff3();
};
//派生类class5继承基类class1,private方式
class class5:private class1
{
public:
void ff1()
{
f1();//
f2();
f4();
//f3();//非法。
}; //
void ff4()
{
//f3();//非法
};
protected:
void ff2();
private:
void ff3();
};
void main()
{
int a[4][3][4];
class2 obj2,*p;
p=new class2;
obj2.ff1();//合法,一个类的对象只能访问它的类的公有成员。
//obj2.ff2();//非法访问,一个类的对象只能是不能访问它的类的保护(protected)、私有(private)成员的,
//相当于另一个类classOther中的代码,其实就是classOther发出来的。
//实际上就是其它类在访问class1当中的成员
//obj2.ff3();//非法访问类的私有成员
scanf("%d",&a);
printf("%4d",a);
}
/*面向对象程序设计:继承成员访问控制机制
---------------------------------------------
成员访问控制 | 类自身 | 派生类 | 其它类 |
---------------------------------------------
private | 可以访问| 不能访问| 不能访问|
protected| 可以访问| 可以访问| 不能访问|
public | 可以访问| 可以访问| 可以访问|
---------------------------------------------*/
/*在继承中加访问控制机制
-------------------------------------------------------
基类成员访问控制 | 继承访问控制 | 在派生类中的访问控制|
-------------------------------------------------------
public | | public |
protected | public | protected |
private | | 不可访问 |
-------------------------------------------------------
public | | protected |
protected | protected | protected |
private | | 不可访问 |
-------------------------------------------------------
public | | private |
protected | private | private |
private | | 不可访问 |
-------------------------------------------------------*/
#include<stdio.h>
#include<iostream.h>
//基类class1
class class1
{
public:
friend void f1()
{
cout<<"class1 f1"<<endl;
};
void f4()
{
f1();//合法,类自身来访问公有public、保护protected、私有private成员以及数据是畅通无阻的
f2();//合法
f3();//合法
};
protected:
void f2();
private:
void f3();
};
//派生类class2继承基类class1,默认为private方式
class class2:class1
{
public:
void ff1()
{
f1();//合法,派生类只能访问基类的公有public、保护proteced的成员。
f2();
f4();
//f3();//非法,派生类不能访问基类(父类)的私有成员,一个类的私有成员是不被继承的。
}; //class2 只能继承class1的公有的、保护的成员,是不能继承class1有私有成员的。
protected:
void ff2();
private:
void ff3();
};
//其它类
class calss3
{
public:
void fff1()
{
f1();//合法,其它类class3只能访问其它类class1的公有(public)的成员
}
protected:
private:
};
//派生类class4继承基类class1,proteced方式
class class4:protected class1
{
public:
void ff1()
{
f1();//
f2();
f4();
//f3();//非法
}; //
void ff4()
{
//f3();//非法
};
protected:
void ff2();
private:
void ff3();
};
//派生类class5继承基类class1,private方式
class class5:private class1
{
public:
void ff1()
{
f1();//
f2();
f4();
//f3();//非法。
}; //
void ff4()
{
//f3();//非法
};
protected:
void ff2();
private:
void ff3();
};
void main()
{
int a[4][3][4];
class2 obj2,*p;
p=new class2;
obj2.ff1();//合法,一个类的对象只能访问它的类的公有成员。
//obj2.ff2();//非法访问,一个类的对象只能是不能访问它的类的保护(protected)、私有(private)成员的,
//相当于另一个类classOther中的代码,其实就是classOther发出来的。
//实际上就是其它类在访问class1当中的成员
//obj2.ff3();//非法访问类的私有成员
scanf("%d",&a);
printf("%4d",a);
}
最后
以上就是繁荣百合为你收集整理的面向对象程序设计:继承成员访问控制机制的全部内容,希望文章能够帮你解决面向对象程序设计:继承成员访问控制机制所遇到的程序开发问题。
如果觉得靠谱客网站的内容还不错,欢迎将靠谱客网站推荐给程序员好友。
发表评论 取消回复