C++ 类的继承一(访问控制)
//类的继承
#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++ 类的继承一(访问控制)的更多相关文章
- Java——类的继承、访问控制
[继承] <1>Java只支持单继承,不支持多继承. <2>继承父类的私有成员变量,只有所有权,没有使用权. [继承中的构造方法]
- PHP类(四)-类的继承
类的继承就是从已经定义的类中继承数据,也可以重新定义或者加入一些数据. 被继承的类称为父类,基类,超类 继承的类称为子类,派生类 在PHP中只能使用单继承,也就是一个类只能从一个类中继承数据,但是一个 ...
- 《挑战30天C++入门极限》C++类的继承与多重继承的访问控制
C++类的继承与多重继承的访问控制 在前面的练习中我们一直在使用public的继承方式,即共有继承方式,对于protected和private继承方式,即保护继承与私有继承方式我们并没有讨论. ...
- ios学习笔记(二)之Objective-C类、继承、类别和协议
二:Objective-C类与继承和协议 在前面已经提过了对象的初始化,这里首先讲的是变量. 2.1 变量 局部变量(内部变量): 局部变量是在方法内作定义说明的,其作用域仅限于方法内,离开方法后使用 ...
- 【JAVA零基础入门系列】Day13 Java类的继承与多态
继承是类的一个很重要的特性,什么?你连继承都不知道?你是想气死爸爸好继承爸爸的遗产吗?(滑稽) 开个玩笑,这里的继承跟我们现实生活的中继承还是有很大区别的,一个类可以继承另一个类,继承的内容包括属性跟 ...
- Java 继承和访问控制
类的继承 Java中使用extends来实现继承 通过继承,子类自动拥有了基类(supercalss)的所有成员. Java只支持单继承,一个子类只允许有一个基类,一个基类可以有多个子类. class ...
- php类的继承(基本概念,访问权限修饰符,重写override)
类的继承 简单理解: 某个类A具有某些特征,另一个类B,也具有A类的所有特征,并且还可能具有自己的更多的一些特征,此时,我们就可以实现:B类使用A的特征信息并继续添加自己的一些特有特征信息. 基本概念 ...
- C++学习笔记:07 类的继承与派生
课程<C++语言程序设计进阶>清华大学 郑莉老师) 基本概念 继承与派生的区别: 继承:保持已有类的特性而构造新类的过程称为继承. 派生:在已有类的基础上新增自己的特性(函数方法.数据成员 ...
- UML类图(上):类、继承和实现
面向对象设计 对于一个程序员来说,在工作的开始阶段通常都是别人把东西设计好,你来做.伴随着个人的成长,这个过程将慢慢变成自己设计一部分功能来实现,自己实现.如果要自己设计,无论是给自己看,还是给别人看 ...
随机推荐
- org.codehaus.xfire.fault.XFireFault: Could not read XML stream.. Nested exception is javax.xml.strea
xfire使用中出现故障: 1. [2014-04-16 14:51:07.564]-[ERROR] org.apache.struts2.dispatcher.Dispatcher Exceptio ...
- 【转】非教育网中IPv4网络访问IPv6资源
1. 背景知识 随着个人电脑.移动终端.乃至物联网的不断发展,有很大的IP地址需求.由于IPv4协议设计时没有料到日后网络会如此发达,IPv4网络中的IP数量相对今天的需求来说,显得捉襟见肘.加上IP ...
- 转换到 StoryBoard 的公布说明(Converting to Storyboards Release Notes)
转换到 StoryBoard 的公布说明(Converting to Storyboards Release Notes) 太阳火神的漂亮人生 (http://blog.csdn.net/opengl ...
- swift -类的定义及使用
// // main.swift // ClassDemo-06 // import Foundation println("Hello, World!") //类的定义 Pers ...
- android.app.FragmentManager 与 android.support.v4.app.FragmentManager带来的若干Error
Fragment是activity的界面中的一部分或一种行为.你能够把多个Fragment们组合到一个activity中来创建一个多面界面而且你能够在多个activity中重用一个Fragment.你 ...
- C++设计模式实现--职责链(Chain of Responsibility)模式
一. 概述 职责链模式: 使多个对象都有机会处理请求.从而避免请求的发送者和接收者之间的耦合关系.将这些对象连成一条链,并沿着这条链传递该请求,直到有一个对象处理它为止. 二. 举个样例 员工要求加薪 ...
- 发现恶意ip大量访问 可使用命令进行封禁
1. vim /etc/sysconfig/iptables 2.添加箭头指向的语句,ip可以替换, 3. 保存后退出 service iptables save 4.重启 service iptab ...
- Linux命令-文件处理命令:touch
touch chengshi.list 在当前目录中创建chengshi.list文件 touch /root/chengshi.list 在root目录下面创建chengshi.list文件 tou ...
- MFC总结之CListCtrl用法及技巧(一)
本文根据本人在项目中的应用,来谈谈CListCtrl的部分用法及技巧.当初学习时,查了很多资料,零零碎碎的作了些记录,现在主要是来做个总结,方便以后查阅.主要包括以下十三点内容:基本操作.获取选中行的 ...
- shell中的find和xargs详细解析