#include <iostream>
#include <stack>
#include <queue>
#include <exception>
#include <sstream>
#include <string>
#include <vector>
#include<list>
#include<cassert>
#include<cstdlib>
using namespace std; class A{
private:
int AprivateVar;
void Apirvate()
{
cout<<"A:Aprivate()"<<endl;
}
protected:
int AprotectedVar;
void Aprotected()
{
cout<<"A:Aprotected()"<<endl;
}
public:
int ApublicVar;
void Apublic()
{
cout<<"A:Apublic()"<<endl;
} void Test()
{
AprivateVar=;
Apirvate();
AprotectedVar=;
Aprotected();
ApublicVar=;
Apublic();
}
}; class Bprivate:private A
{
public:
void test()
{
//访问基类private成员
// AprivateVar=1;//这里因为子类声明的是private故不可访问
// Apirvate();//这里因为子类声明的是private故不可访问 AprotectedVar=;
Aprotected(); ApublicVar=;
Apublic();
}
}; class Cprivate:public Bprivate
{
public:
void test()
{
//此处全都不能访问
//在子类中:基类的public成员和protected成员是可见的.基类的public成员和protected成员都变成子类的private成员,并且不能这个子类的派生类所访问.
/*AprivateVar=1;/
Apirvate();/ AprotectedVar=1;
Aprotected(); ApublicVar=1;
Apublic();*/
}
}; class Bprotected:protected A
{
public:
void test()
{
//访问基类private成员
//AprivateVar=1;//这里因为子类声明的是private故不可访问
//Apirvate();//这里因为子类声明的是private故不可访问 AprotectedVar=;
Aprotected(); ApublicVar=;
Apublic();
}
}; class Bpublic:public A
{
public:
void test()
{
//AprivateVar=1;//子类不能访问基类中的private成员
//Apirvate();//子类不能访问基类中的private成员 AprotectedVar=;//子类可以访问基类中的protected成员
Aprotected();//子类可以访问基类中的protected成员 ApublicVar=;//子类可以访问基类中的public成员
Apublic();//子类可以访问基类中的public成员
}
}; int main(int argc,char* argv[])
{
A testA;
// testA.Apirvate();//实例的私有方法不能访问
// testA.Aprotected();//实例的受保护方法不能访问
testA.Apublic(); Bprivate testB;
//testB.Apirvate();//实例的私有方法不能访问
// testB.Aprotected();//实例的受保护方法不能访问
//testB.Apublic();//因为是private继承的.所以.实例对象不能访问私有方法 Bprotected testB2;
//testB2.Apirvate();//实例的私有方法不能访问
//testB2.Aprotected();//实例的受保护方法不能访问
//testB2.Apublic();//实例的受保护方法不能访问 Bpublic testB3;
//testB3.Apirvate();//子类的实例对象.只能访问基类的public成员.
//testB3.Aprotected();//子类的实例对象.只能访问基类的public成员.
testB3.Apublic();//子类的实例对象.只能访问基类的public成员.
return ;
} /*
总结一下:
基类的实例对象,在这里和普通类是一样的,只能访问类的public成员方法和public成员变量;也就是public成员可见,protected和private是不可见的;
1.Public继承:基类的public成员和protected成员对子类是可见的.继承以后public和protected都保持原有的状态.private是不可见的.也就是说子类
中不能访问基类中的private成员,
子类的实例对象.只能访问基类的public成员.以及自身的public成员.
所以:在public继承时,子类的实例对象可以访问基类中的public成员.而子类中的成员方法可以访问基类中的public和protected成员.
2.Private继承:基类的实例对象,可以访问基类的public成员(和普通类一样).
在子类中:基类的public成员和protected成员是可见的.基类的public成员和protected成员都变成子类的private成员,这些public和protected成员不能被这个子类的派生类所访问.
基类的私有成员是不可见的,也就是说子类不能访问基类中的私有成员.
子类的实例对象,不能访问基类的所有成员.私有继承时,基类的成员只能由直接派生类访问,而无法再往下继承.
3.protected继承:子类中可以访问基类的public成员和protected成员,基类的public和protected成员都变成protected成员,并且不能被这个派生类的子类所访问,基类的私有成员
是不可见的,派生类不能访问基类中的私有成员.在protected继承时,基类的成员也只能由直接派生类访问,不能在往下继承. */

对private protected public的详解:的更多相关文章

  1. private,protected,public和default的区别

    private,protected,public和default的区别 除了default以外,其他都是Java语言的关键字.default代表的是对类成员没有进行修饰的情况.它本身也代表了一种访问控 ...

  2. @private@protected@public@package

    @private@protected@public@package 为了强制一个对象隐藏其数据,编译器限制实例变量范围以限制其在程序中的可见性 但是为了提供灵活性,苹果也让开发者显式设置范围(四选一) ...

  3. oc 中四种实例变量的范围类型@private@protected@public@package

    To enforce the ability of an object to hide its data, the compiler limits the scope of instance vari ...

  4. iOS中四种实例变量的范围类型@private@protected@public@package

    文档上记录是这样的 The Scope of Instance Variables Toenforce the ability of an object to hide its data, the c ...

  5. PHP中private、public、protected的区别详解

    先简单粗俗的描述下:public 表示全局,类内部外部子类都可以访问:private表示私有的,只有本类内部可以使用:protected表示受保护的,只有本类或子类或父类中可以访问: 再啰嗦的解释下: ...

  6. Java中的private protected public和default的区别

    转至:http://blog.sina.com.cn/s/blog_74c571240101jaf5.html    类内部  本包  子类 外部包  public    √  √  √  √ pro ...

  7. @private @protected @public

    @private  作用范围仅仅在自身类 @protected 作用范围在自身类及继承自己的子类(默认属性) @public 在系统中的不论什么地方都能够使用

  8. 【Java】abstract,final,static,private,protected,public的区别

    [abstract]抽象的 1. abstract可以修饰类和成员方法,被abstract修饰的类称为抽象类,被abstract修饰成员方法叫抽象方法.抽象类不一定有抽象方法,但拥有抽象方法的类一定是 ...

  9. java: private, protected, public

    这三个 「可访问修饰符」,是一个老生常谈的话题了.在 C++ 中也有类似的概念. 按其修饰对象的不同,分为几种用法小记一下: 用于类 只有 public 可以修饰类:private 和 protect ...

随机推荐

  1. 201621123014《Java程序设计》第十三周学习总结

    1. 本周学习总结 以你喜欢的方式(思维导图.OneNote或其他)归纳总结多网络相关内容. 2. 为你的系统增加网络功能(购物车.图书馆管理.斗地主等)-分组完成 为了让你的系统可以被多个用户通过网 ...

  2. 不能解决,复选框在request对象获取的信息后显示在用户信息里面为中文的选项名

    因为方框里面value 不用中文?.? 假如用中文呢?  完全可以!!已经试验 如果不用中文,那么中文可以用对象的参数来获得,即在login.jsp中就要用javabean类属性

  3. 剑指Offer-翻转单词顺序

    题目描述: 输入一个英文句子,翻转句子中单词的顺序,但单词内字符串的顺序不变.例如输入字符串:"I am a student",则输出"student a am I&qu ...

  4. centos 下配置oracle11gR2开机自启

    这里使用的环境是 CentOS 6.6 ,并且已经装好了oracle11gR2 oracle启动分为两个步骤: 1.启动监听 2.启动服务 1.root 用户下修改ORATAB(将N该为Y): [ro ...

  5. DataTable:数据库到程序的桥梁

    DataTable:是一个临时保存数据的网格虚拟表(表示内存中数据的一个表.).DataTable是ADO dot net 库中的核心对象,它无须代码就可以简单的绑定数据库,它具有微软风格的用户界面. ...

  6. loj 6084.「美团 CodeM 资格赛」跳格子

    题目: link 题解: 尽量走\(a\). 只要保证走\(a\)后到达的点一定可以到终点就可以走. 所以从终点开始\(dfs\)出所有能够到达终点的点. 然后再从起点开始\(dfs\)路径即可. 如 ...

  7. java 使用最新api操作mongodb

    // package com.auto.test.dbmodel; import java.util.ArrayList; import org.bson.Document;import org.bs ...

  8. [转]html5 video在安卓大部分浏览器包括微信最顶层的问题

    能否解决video标签置顶的问题?答案是:不行的. 具体可查看官方解释:http://x5.tencent.com/guide?id=2009 //====================201604 ...

  9. java代码----方法类练习中~~~未领会

    总结:今天我很失败,问了老师继承的问题还是没弄懂.因为,技术宅的能力,我好怕啊.太强了. package com.da.ima2; public class yut {// 使用substring方法 ...

  10. POJ 1276 Cash Machine(单调队列优化多重背包)

    Cash Machine Time Limit: 1000MS   Memory Limit: 10000K Total Submissions: 38986   Accepted: 14186 De ...