您的位置:首页 > 其它

面向对象程序设计:继承成员访问控制机制

2009-11-26 13:31 645 查看
/*面向对象程序设计:继承成员访问控制机制

---------------------------------------------

成员访问控制 | 类自身 | 派生类 | 其它类 |

---------------------------------------------

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);

}
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: