5、继承与派生2-访问控制

1、公有继承

当类的继承方式为公有继承时,基类的公有和保护成员的访问属性在派生类中不变,而基类的私有成员不可直接访问。---也就是说基类的公有成员和保护成员被继承到派生类中访问属性不变,仍作为派生类的公有成员和保护成员,派生类的其他成员可以直接访问他们。在类族之外只能通过派生类的对象访问从基类继承的公有成员,而无论是派生类的成员还是派生类的对象都无法直接访问基类的私有成员。

eg:

point类公有继承。

在这个例子中从point类派生出新的Rectangle(矩形)类。矩形是由一个点加上长、宽构成,矩形的点具备了point类的全部特征,同时矩形自身也有一些特点,这就需要在继承point类的同时添加新的成员。

程序的头文件部分

//Rectangle.h

class Point  //基类Point类的定义

{

  public:

    void InitP(float xx=0,float yy=0){X=xx;Y=yy;}

    void Move(float xOff,float yOff){X+=xOff;Y+=yOff;}

    float GetX(){return X;}

    float GetY(){return Y;}

  private:

    float X,Y;

};

class Rectangle:public Point             //派生类定义部分

{

  public:        //新增公有函数成员

    void InitR(float x,float y,float w,float h)

    {InitP(x,y);W=w;H=h;} //调用基类公有成员函数

    float GetH(){return H;}

    float GetW(){return W;}

  private:    //新增私有数据成员

    float W,H;

};

//End of Rectangle.h

首先定义了基类point,派生类Rectangle继承了point类的全部成员

因为继承方式为公有形式,故基类中的公有成员在派生类中访问属性保持原样,派生类的成员函数集对象可以访问到基类的公有成员。基类原有的外部接口变成了派生类的外部接口的一部分。当然派生类自己新增的成员之间都是可以相互访问的。

下面是程序的主函数部分

#include<iostream>

#include<cmath>

#include"rectangle.h"

using namespace std;

int main()

{

  Rectangle rect;//声明Rectangle类的对象

  rect.InitR(2,3,20,10);//设置矩形的数据

  rect.Move(3,2);//移动矩形位置

  cout<<"The data of rect(X,Y,W,H):"<<endl;

  cout<<rect.GetX()<<","

    <<rect.GetY()<<","

    <<rect.GetW()<<","

    <<rect.GetH()<<endl;

}

2、私有继承

时间: 2024-11-05 23:19:10

5、继承与派生2-访问控制的相关文章

3.继承与派生

1.类的继承与派生 - 类的继承:从已有类产生新类的过程.原有类称为基类或父类,产生的新类称为派生类或子类. - 派生类语法: class 派生类名:继承方式   基类名1,继承方式 基类名2,... { } - 单继承和多继承:基类个数决定 - 直接基类,间接基类 - 继承方式规定了如何访问从基类继承的成员 - 派生类成员是指除了从基类继承的所有成员之外,新增加的数据和函数成员 - 派生类生成过程:吸收基类成员->改造基类成员->添加新的成员,构造函数和析构函数都不被继承 2.访问控制 -

C++学习笔记44:继承与派生

类的组合,类的继承 类的组合(汽车类,轮子类,此时可以把轮子类组合到汽车类:) 类的继承(交通工具类,汽车类,此时汽车类可以派生自交通工具类:) 组合:常用描述has a.. 继承:常用描述is a .. 如果既可以用组合又可以用派生解决,那首选组合方式: 继承与派生的目的 继承的目的:实现设计和代码的重用 派生的目的:当新的问题出现,原有程序无法解决,需要对原有的程序进行改造 派生类的构成 吸收基类的成员 改造基类的成员 添加新的成员 吸收基类的成员 默认情况下派生类包含了全部的基类中除了构造

第七章:继承与派生

主要内容: 1.类的继承与派生 2.类成员的访问控制 3.单继承与多继承 4.派生类的构造.析构函数 5.类成员的标识与访问 若为public继承方式: 1.派生类的成员函数可以直接访问基类的public和protected成员,不可访问基类的private成员. 2.派生类的对象只能访问基类的public成员 若为private继承方式: 1.派生类的成员函数可以直接访问基类的public和private成员,不能直接访问基类private成员. 2.派生类的对象不能直接访问基类中的任何成员.

继承与派生类Circle and Rectangle和The Person, Student, Employee, Faculty and Staff Class

C++为了更加的灵活,更加是程序员自由随性的编写程序,定义了类类型.我们在其中自定义类型,在其中封装函数,甚至在其中重载运算符来改变其原有的属性.类的继承又将类应用的更加开拓.我们用类来使用原有的类,充分体现了C++的开放与包容 派生类(或子类,继承类)拥有基类(或父类,超类)的所有属性及行为,又定义了自己的属性及行为,派生类能够访问基类,但基类就没有访问派生类的权限.二者的关系并不可逆.基类是派生类的抽象,派生类是基类的具体化.从一个基类派生出来的叫做单继承,从多个基类派生出来的叫做多继承.由

Part7 继承与派生 7.1继承的基本概念和语法 7.2 继承方式

7.1继承的基本概念和语法 继承:保持已有类的特性而构造新类的过程称为继承派生:在已有类的基础上新增自己的特性而产生新类的过程称为派生. 继承与派生的目的: 继承的目的:实现设计与代码的重用. 派生的目的:当新的问题出现,原有程序无法解决(或不能完全解决)时,需要对原有程序进行改造. 派生类的构成: 1 吸收基类成员 2 改造基类成员 3 添加新的成员 默认情况下派生类包含了全部基类中除了构造和析构函数之外的所有成员.c++11 规定可以用using语句继承基类构造函数 7.2 继承方式1 继承

类的继承与派生

继承与派生 在教材中给出的对类的继承和派生的解释: "类的继承,是新的类从已有类那里得到已有的特性." "从已有的类产生新类的过程就是类的派生." 新的类是基类的派生类,新的类从基类处得到已有的特性. 一.继承与派生举例 新的类是基类的派生类,新的类从基类处得到已有的特性. 例1.写一个类student,再写一个Student类的派生类Undergraduate. 代码: #define _CRT_SECURE_NOWARNINGS #include<iost

06_继承与派生

一:继承的概念 面向对象程序设计有 4 个主要特点:抽象.封装.继承和多态性.我们已经讲解了类和对象,了解了面向对象程序设计的两个重要特征一数据抽象与封装,已经能够设计出基于对象的程序,这是面向对象程序设计的基础. 要较好地进行面向对象程序设计,还必须了解面向对象程序设计另外两个重要特征——继承性和多态性.继承性是面向对象程序设计最重要的特征,可以说,如果没有掌握继承性,就等于没有掌握类和对象的精华,就是没有掌握面向对象程序设计的真谛. (1)类之间的关系 has-A, uses-A 和 is-

程序设计实习MOOC / 继承和派生——编程作业 第五周程序填空题1

描述 写一个MyString 类,使得下面程序的输出结果是: 1. abcd-efgh-abcd- 2. abcd- 3. 4. abcd-efgh- 5. efgh- 6. c 7. abcd- 8. ijAl- 9. ijAl-mnop 10. qrst-abcd- 11. abcd-qrst-abcd- uvw xyz about big me take abcd qrst-abcd- 要 求:MyString类必须是从C++的标准类string类派生而来.提示1:如果将程序中所有 "My

C++继承与派生

2017-06-25 23:00:59 c++中的继承和派生是面向对象编程中的一个重要内容,通过继承可以实现代码的复用,同时继承也是实现多态性的基础. 一.c++继承的基本形式 class 派生类名:继承方式 基类名,继承方式 基类名 {}: 继承方式主要有三种,public ,private ,protected. 缺省条件下是private继承,三种中public继承用的最多,不同的继承方式决定了子类中从基类继承过来的成员的访问属性. public继承: 基类的public,protecte

四.OC基础--1.文档安装和方法重载,2.self和super&amp;static,3.继承和派生,4.实例变量修饰符 ,5.私有变量&amp;私有方法,6.description方法

四.OC基础--1.文档安装和方法重载, 1. 在线安装 xcode-> 系统偏好设置->DownLoads->Doucument->下载 2. 离线安装 百度xcode文档 3. 方法重载: 是指在一个类中定义多个同名的方法 在OC中没有重载 2.self和super&static, self和super: 1. self理解: 谁调用当前方法, self就代表谁. 比如: 在对象方法中,self代表的是对象, 因为只有对象才可以调用对象方法 在类方法中, self代表的