c++ public protected private 继承
1:访问控制
1.1 public 这类型成员可以被类本身函数访问,也可以被外部创建的类对象调用。子类对象与子类内部可以访问
1.2 protected类型成员,只能被类本身函数访问。外部创建的类对象没有访问权限。子类对象没有访问权限,子类内部可以访问
1.3 private类型成员,只能被类本身函数访问,外部创建的类对象没有访问权限。子类对象和子类内部都没有访问权限
class TestObject{ public:void Function();void TestPublic(); protected:void TestProtected(); private:void TestPrivate(); };void TestObject::Function(){TestPublic();TestProtected();TestPrivate(); }int main(){TestObject obj;obj.TestPublic();//yesobj.TestProtected();//errorobj.TestPrivate();//error }
2:继承关系的访问控制
2.1 public继承。public继承使子类顺延父类的访问控制属性,即成员保持父类的控制属性,这样在子类中的成员访问控制同父类的一样
class Base { public:Base(void);~Base(void);void TestPublic(); protected:void TestProtected(); private:void TestPrivate(); };void Base::TestPublic(){cout<<"TestPublic"<<endl; }void Base::TestProtected(){cout<<"TestProtected"<<endl; }void Base::TestPrivate(){cout<<"TestPrivate"<<endl; }class Child :public Base { public:Child (); };Child ::Child (){child.TestPublic();//yesTestProtected();//yesTestPrivate();//error }int _tmain(int argc, _TCHAR* argv[]) {Child child;child.TestPublic();//yes//child.TestProtected();//error//child.TestPrivate();//errorreturn 0; }
2.2 protected继承,将父类public和protected属性的成员属性顺延到子类来后变成protected属性。protected属性是可以提供给子类在内部访问的。
如上代码,如果改为protected继承。则内部访问保持和public继承的不变,而在外部,由于父类public属性被更改为protected的属性,则在外部创建的子类对象没有了访问权限。
class Child :protectedBase{ }Child ::Child (){child.TestPublic();//yesTestProtected();//yesTestPrivate();//error }int _tmain(int argc, _TCHAR* argv[]) {Child child;//child.TestPublic();//error//child.TestProtected();//error//child.TestPrivate();//errorreturn 0; }
2.3 private继承。这种继承方式中断了后续子类对当前类的父类的所有访问权限,在该种继承方式下,会将父类public和protected属性顺延成private属性。这样,几时后面子类再次继承,都没有了对当前父类的成员的访问权限。
class Child :privateBase{ }Child ::Child (){child.TestPublic();//yesTestProtected();//yesTestPrivate();//error }class Mini :public Child{public:Mini(); }Mini::Mini(){TestPublic();//errorTestProtected();//errorTestPrivate();//error }int _tmain(int argc, _TCHAR* argv[]) {Mini mini;//mini.TestPublic();//error//mini.TestProtected();//error//mini.TestPrivate();//errorreturn 0; }
转载于:https://www.cnblogs.com/zhidao-chen/p/3834155.html
c++ public protected private 继承相关推荐
- C++ (public, protected, private继承)
http://thinkinginmylife.spaces.live.com/blog/cns!E44140D5E07BEC07!137.entry 我转~~~C++5(public, protec ...
- php protected 的继承,14 PHP 类的继承 [public protected private] parent 构造方法 析构方法 重写 最终类和方法 设计模式...
类的继承 简单理解: 某个类A具有某些特征,另一个类B,也具有A类的所有特征,并且还可能具有自己的更多的一些特征,此时,我们就可以实现:B类使用A的特征信息并继续添加自己的一些特有特征信息. 基本概念 ...
- C++ 中的三种继承public , protected, private
三种访问权限 public:可以被任意实体访问 protected:只允许子类及本类的成员函数访问 private:只允许本类的成员函数访问 三种继承方式 public 继承 protect 继承 p ...
- C++中的三种继承public,protected,private详细解析
我们已经知道,在基类以private方式被继承时,其public和protected成员在子类中变为private成员.然而某些情况下,需要在子类中将一个或多个继承的成员恢复其在基类中的访问权限 三种 ...
- JAVA修饰符类型(public,protected,private,friendly)
JAVA修饰符类型(public,protected,private,friendly) public的类.类属变量及方法,包内及包外的不论什么类均能够訪问: protected的类.类属变量及方法, ...
- Java关键字系列(public,protected,private)
Java关键字系列(public,protected,private) public.protected和private做为java访问权限修饰词而使用. 首先要明白,java中的每个定义(定义类.字 ...
- C++ 类访问控制(public/protected/private)小结
第一:private, public, protected 访问标号的访问范围. private:只能由1.该类中的函数.2.其友元函数访问. 不能被任何其他访问,该类的对象也不能访问. protec ...
- C++ Public, Protected, Private
当private,public,protected单纯的作为一个类中的成员权限设置时: private: 只能由该类中的函数.其友元函数访问,不能被任何其他访问,该类的对象也不能访问. protect ...
- C++ 类访问控制(public/protected/private)
From: http://cnmtjp.blog.51cto.com/204390/36548 C++中 public,protected, private 访问标号小结 第一:private, pu ...
- public protect private继承
引自原来在CGD讨论的几点总结: 1. public继承被称为类型继承(type inheritance).往往反映is-a关系. 2. protected继承基类的所有公有成员都成为派生类的prot ...
最新文章
- php 开发restful api,用PHP创建RESTful API?
- opencv学习(十六)之颜色空间转换cvtColor()
- Seafile:用挂载盘客户端让企业在线编辑云端文件
- 【学习/模板】tarjan割点
- 你一定不知道的 Linux 使用技巧
- a challengefor the 2 hour course
- Ant build.xml中的各种变量
- java mvc 导出excel_Java springMVC POI 导出 EXCEL
- java程序cpu突然飚高_Java 定位导致CPU飙升的代码过程
- 一体化医用电脑推车行业调研报告 - 市场现状分析与发展前景预测(2021-2027年)
- 灰度共生矩阵GLCM及其matlab实现
- Coursera, Big Data 3, Integration and Processing (week 1/2/3)
- 450B Jzzhu and Sequences 我考研之后做的第一道题
- JAVA实现杨辉三角的三种方式
- 软考中级-软件设计师|下午题攻略
- Excel常用函数——count
- 怎样去除抖音短视频的水印,快速去除视频水印的方法
- java 同比环比_数据相关概念同比,环比
- 手机百度浏览器怎么设置繁体字_繁体字转换简体字在线转换_有什么软件可以把繁...
- windows消息大全