//类的继承
#include<iostream>
using namespace std; /*
面向对象中的继承类之间的父子关系
1.子类拥有父类所有的成员属性和成员函数(包括私有成员变量)
2.子类就是一种特殊的父类
3.子类对象可以当作父类对象使用
4.子类可以拥有父类没有的方法和属性 c++中的类成员访问级别(public,protected,private) 类成员访问级别设置原则
1.需要被外界访问的成员直接设置为public
2.只能在当前类中访问的成员设置为private
3.只能在当前类和子类中访问的成员设置为protected,protected的成员访问权限介于public和private之间 判断类成员变量访问权限三步骤
1.看调用语句写在子类的内部还是外部
2.看子类如何从父类继承(public,protected,private)
3.看父类中的访问级别(public,protected,private) */ class A{
public:
int a;
protected:
int b;
private:
int c;
}; class B:public A
{
public:
void Test1(){
a = ;//父类的公有成员可以在子类内部访问
b = ;//父类的保护成员可以在子类内部访问
//c = 20; 报错: 父类的私有成员在子类内部无法访问
}
};
class Bt :public B
{
public:
void Test12(){
a = ;//可以访问B类中的a属性--说明a属性的访问级别至少是public或者protected
b = ;//可以访问B类中的b属性--说明a属性的访问级别至少是public或者protected
//c = 20; 报错: 父类的私有成员在子类内部无法访问
}
}; void Protect1(){
B b1;
b1.a = ;//父类的公有成员可以在子类外部访问
//证明:public继承父类,父类的公有成员会变成子类的公有成员
//b1.b = 21; 报错 说明:public继承父类,父类的保护成员会变成子类的保护成员
} class C :protected A{
void Test1(){
a = ;//父类的公有成员可以在子类内部访问
b = ;//父类的保护成员可以在子类内部访问
//c = 20; 报错: 父类的私有成员在子类内部无法访问
}
}; class Ct :public C{
void Test12(){
a = ;//可以访问C类中的a属性--说明a属性的访问级别至少是public或者protected
b = ;//可以访问C类中的b属性--说明a属性的访问级别至少是public或者protected
//c = 20; 报错: 父类的私有成员在子类内部无法访问
}
}; void Protect2(){
C c1;
//c1.a = 10; 报错 :error C2247 : “A::a”不可访问,因为“C”使用“protected”从“A”继承
//说明 protected继承父类,父类的公有成员会变为子类的保护成员
//c1.b = 21; 报错 error C2248 : “A::b” : 无法访问 protected 成员(在“A”类中声明)
//说明 protected继承父类,父类的保护成员会变为子类的保护成员
} class D :private A{
void Test1(){
a = ;//父类的公有成员可以在子类内部访问
b = ;//父类的保护成员可以在子类内部访问
//c = 20; 报错: 父类的私有成员在子类内部无法访问
}
}; class Dt :public D{
void Test12(){
//a = 10; 报错 error C2247 : “A::a”不可访问,因为“D”使用“private”从“A”继承
//D中的成员变量无法被其子类访问,说明a成员属性是D的私有成员属性
//b = 20; 报错 error C2248 : “A::b” : 无法访问 无法访问的 成员(在“A”类中声明)
//D中的成员变量无法被其子类访问,说明b成员属性是b的私有成员属性
//说明:private继承父类,父类中的公有成员变量会变成子类的私有成员变量,父类的保护成员变量会变成子类的私有成员变量
}
}; void main(){
system("pause");
} /*
c++的继承方式(public,private,protected)会影响子类对外的访问属性
public继承:父类成员在子类中保持原有的访问级别
--即父类的公有成员变成子类的公有成员,父类的保护成员成为子类的保护成员,父类的私有成员被子类继承,但不是子类的私有成员
private继承:父类成员在子类中变为private成员
--即父类的公有成员变成子类的私有成员,父类的保护成员成为子类的私有成员,父类的私有成员被子类继承,但不是子类的私有成员
protected继承:父类中public成员变成protected
--即父类的公有成员变成子类的保护成员,父类的保护成员成为子类的保护成员,父类的私有成员被子类继承,但不是子类的私有成员 总结:不同的继承方式可能改变继承成员的访问属性
*/

C++ 类的继承一(访问控制)的更多相关文章

  1. Java——类的继承、访问控制

    [继承] <1>Java只支持单继承,不支持多继承. <2>继承父类的私有成员变量,只有所有权,没有使用权.   [继承中的构造方法]

  2. PHP类(四)-类的继承

    类的继承就是从已经定义的类中继承数据,也可以重新定义或者加入一些数据. 被继承的类称为父类,基类,超类 继承的类称为子类,派生类 在PHP中只能使用单继承,也就是一个类只能从一个类中继承数据,但是一个 ...

  3. 《挑战30天C++入门极限》C++类的继承与多重继承的访问控制

        C++类的继承与多重继承的访问控制 在前面的练习中我们一直在使用public的继承方式,即共有继承方式,对于protected和private继承方式,即保护继承与私有继承方式我们并没有讨论. ...

  4. ios学习笔记(二)之Objective-C类、继承、类别和协议

    二:Objective-C类与继承和协议 在前面已经提过了对象的初始化,这里首先讲的是变量. 2.1 变量 局部变量(内部变量): 局部变量是在方法内作定义说明的,其作用域仅限于方法内,离开方法后使用 ...

  5. 【JAVA零基础入门系列】Day13 Java类的继承与多态

    继承是类的一个很重要的特性,什么?你连继承都不知道?你是想气死爸爸好继承爸爸的遗产吗?(滑稽) 开个玩笑,这里的继承跟我们现实生活的中继承还是有很大区别的,一个类可以继承另一个类,继承的内容包括属性跟 ...

  6. Java 继承和访问控制

    类的继承 Java中使用extends来实现继承 通过继承,子类自动拥有了基类(supercalss)的所有成员. Java只支持单继承,一个子类只允许有一个基类,一个基类可以有多个子类. class ...

  7. php类的继承(基本概念,访问权限修饰符,重写override)

    类的继承 简单理解: 某个类A具有某些特征,另一个类B,也具有A类的所有特征,并且还可能具有自己的更多的一些特征,此时,我们就可以实现:B类使用A的特征信息并继续添加自己的一些特有特征信息. 基本概念 ...

  8. C++学习笔记:07 类的继承与派生

    课程<C++语言程序设计进阶>清华大学 郑莉老师) 基本概念 继承与派生的区别: 继承:保持已有类的特性而构造新类的过程称为继承. 派生:在已有类的基础上新增自己的特性(函数方法.数据成员 ...

  9. UML类图(上):类、继承和实现

    面向对象设计 对于一个程序员来说,在工作的开始阶段通常都是别人把东西设计好,你来做.伴随着个人的成长,这个过程将慢慢变成自己设计一部分功能来实现,自己实现.如果要自己设计,无论是给自己看,还是给别人看 ...

随机推荐

  1. javascript - 字符串比较

    1. sort是排序根据字符的ASCIll码排序的,不分字符串或其它元素(仅适用于数组) 2. split是将字符串转为数组形式 3. join是将数组转为字符串形式 4. indexOf找到元素后返 ...

  2. request.getServletContext()

    servlect 3.0 支持,低版本不支持,报错的话看jar包的引用.

  3. CentOS如何安装linux桌面?

    CentOS如何安装linux桌面? 以前默认安装分centos没有图形界面,今天想用下, yum groupinstall "GNOME Desktop" "Graph ...

  4. 【BIRT】Format Number下的Round Mode中的各项解释

    页面展示 从上图我们可以才看出,共有Half Up.Half Down.Half Even.Up.Down.Celling.Floor.Unnecessary 下面一一介绍每一个的意思 Half Up ...

  5. knockoutjs 静动态数据、行为绑定,计算属性及Sync同步更新 Value值更新事件控制

    data-bind="text: firstName"中data-bind属性是Knockout 用来显示关联UI和viewmodel的桥梁, text 表示把绑定的文本赋值给DO ...

  6. ERP,SCM,CRM,BRP,OMS,WMS 企业管理的6大核心系统

    [导读]:人体共有八大系统:运动系统.神经系统.内分泌系统.循环系统.呼吸系统.消化系统.泌尿系统.生殖系统.这些系统协调配合,使人体内各种复杂的生命活动能够正常进行. 同理,企业要想健康的运转,长久 ...

  7. 【apache2】apache2查看错误日志、请求日志

    1.一般存储路径在 [ /var/log/apache2/ ]下面, 2.错误日志和请求日志 必须要进行定期清理. 清理完成后,必须重启apache  [  cd /  ;  service apac ...

  8. Git使用教程(全)

    Git是什么? Git是目前世界上最先进的开源的分布式版本控制系统(没有之一),用于敏捷高效地处理任何或小或大的项目. Git 是 Linus Torvalds 为了帮助管理 Linux 内核开发而开 ...

  9. php后台“爬虫”模拟登录第三方系统

    http://blog.csdn.net/liu_c_y/article/details/49956679 http://www.php100.com/html/webkaifa/PHP/PHPyin ...

  10. 如何使用Android MediaStore裁剪大图片

    译者按:在外企工作的半年多中花了不少时间在国外的网站上搜寻资料,其中有一些相当有含金量的文章,我会陆陆续续翻译成中文,与大家共享之.初次翻译,“信达雅”三境界恐怕只到信的层次,望大家见谅! 这篇文章相 ...