06、面向对象程序实现-继承与多态性(I)-2010

合集下载

面向对象的程序设计的基本特征

面向对象的程序设计的基本特征

面向对象的程序设计的基本特征面向对象的程序设计的基本特征面向对象的程序设计,指的是将现实世界的实体抽象为对象,把对象和对象之间的交互关系作为程序实现的主要元素。

面向对象的程序设计是当代程序设计领域的重要研究方向,它的主要特征可以按类划分为以下几个方面。

一、封装性封装性是面向对象程序设计中的基本特征之一,它指的是将数据和方法封装起来,对外部不可见。

通过封装,我们可以将类内部的数据和函数保护起来,确保程序的稳定性和安全性。

二、继承性继承性是指一个类可以从另一个类继承属性和方法。

继承是面向对象程序设计的重要特性之一,通过继承,我们可以减少代码的重复,提高程序的可维护性和可扩展性。

同时,继承也可以实现多态性,即在不同的情况下,同一函数可以实现不同的功能。

三、多态性多态性是指同一函数在不同的对象中可以表现出不同的功能。

多态是面向对象程序设计的重要特性之一,通过多态,我们可以提高程序的效率和可读性。

多态性的实现需要结合继承和多态两个特性。

四、抽象性抽象性是指将一个对象的特性抽象出来,形成一个抽象类或接口,不仅可以提高程序的可读性,同时也能够实现代码的复用。

抽象性是面向对象程序设计的基本特性之一,通过抽象性,我们可以将客观事物抽象成为标准化的类或接口,从而降低参数的复杂性。

总之,面向对象程序设计是一种灵活、高效、可维护的程序设计方法,具有封装性、继承性、多态性和抽象性等基本特征。

通过合理应用这些特征,我们可以提高程序的质量和效率,同时也能够实现代码的复用和提高程序的可读性。

无论是在软件开发、系统设计还是算法优化等领域,面向对象的程序设计都是一种值得推崇的编程范式。

MFC图书借阅系统课程设计

MFC图书借阅系统课程设计

MFC图书借阅系统课程设计一、课程目标知识目标:1. 学生能够掌握MFC编程基础知识,理解图书借阅系统的功能需求与数据结构。

2. 学生能够运用面向对象编程思想,设计并实现图书借阅系统的各功能模块。

3. 学生了解数据库操作的基本方法,能够使用SQL语句实现图书信息的增删改查。

技能目标:1. 学生通过本课程学习,具备使用MFC进行Windows应用程序开发的能力。

2. 学生能够运用所学知识,独立设计并实现一个简单的图书借阅系统,包括用户登录、图书查询、借阅和归还等功能。

3. 学生能够在课程实践中掌握软件开发的基本流程,提高团队协作能力。

情感态度价值观目标:1. 学生在学习过程中,培养对计算机编程的兴趣和热情,增强信息素养。

2. 学生通过课程实践,认识到编程在解决实际问题中的应用价值,提高创新意识和实践能力。

3. 学生在团队合作中,学会尊重他人,培养良好的沟通能力和团队精神。

课程性质:本课程为高年级计算机科学与技术专业的选修课程,旨在巩固学生的编程基础,提高实际项目开发能力。

学生特点:学生已具备一定的编程基础和面向对象编程思想,具有较强的学习能力和实践能力。

教学要求:结合课程性质和学生特点,注重理论与实践相结合,强调动手实践和团队协作,培养学生的实际项目开发能力。

通过课程目标的分解,使学生在完成具体学习成果的过程中,达到课程目标的要求。

后续教学设计和评估将围绕课程目标进行,确保学生能够取得预期的学习成果。

二、教学内容1. MFC编程基础:复习MFC框架、控件使用、事件处理等基础知识,涉及教材第3章至第5章内容。

- 窗口与视图- 控件使用与事件处理- 文档/视图结构2. 面向对象设计与实现:结合图书借阅系统需求,讲解如何运用面向对象编程思想进行模块设计,涉及教材第2章内容。

- 类与对象- 继承与多态- 接口与实现3. 数据库操作:介绍数据库的基本操作,以SQL语句为核心实现图书信息的管理,涉及教材第7章内容。

(完整版)大一学期C++题库

(完整版)大一学期C++题库

2012年大学C++期末考试题库一、单选题:1. 能作为C++程序的基本单位是( C )。

A. 字符B. 语句C. 函数D. 源程序文件2. 程序中主函数的名字为( A )。

A. mainB. MAINC. MainD. 任意标识符3. 关于C++与C 语言的关系的描述中,(D )是错误的。

A. C 语言是C++的一个子集;B. C 语言与C++是兼容的;C. C++对C 语言进行了一些改进;D. C++和C 语言都是面向对象的4. 可用作C++语言用户标识符的一组标识符是( B )。

A. void define +WORDB. a3_b3 _123 YNC. for -abc CaseD. 2a DO sizeof5. 存储以下数据,占用存储字节最多的是( D )。

A. 0B. ‘0’C. “0”D. 0.06. 设int a=12;则执行完语句a+=a*a ;后,a 的值是( C )。

A. 12B. 144C. 156D. 2887. 假设在程序中 a 、b 、c 均被定义成整型,所赋的值都大于1,则下列能正确表示代数式abc1的表达式是( D )。

A. 1.0/a*b*c B. 1/(a*b*c) C. 1/a/b/(float)c D. 1.0/a/b/c8. 以下说法中正确的是(B )。

A. C++程序总是从第一个定义的函数开始执行B. C++程序总是从main 函数开始执行C. C++函数必须有返回值,否则不能使用函数D. C++程序中有调用关系的所有函数必须放在同一个程序文件中9. 下面有关构造函数的描述中,正确的是(B )。

A. 构造函数可以带有返回值B. 构造函数的名字与类名完全相同C. 构造函数必须带有参数D. 构造函数必须定义,不能缺省 10.10.在声明类时,下面的说法正确的是( )。

A. 可以在类的声明中给数据成员赋初值B. 数据成员的数据类型可以是registerC. private ,public ,protected 可以按任意顺序出现D. 没有用private ,public ,protected 定义的数据成员是公有成员11.在下面有关析构函数特征的描述中,正确的是( A )。

c#第6章 继承与多态性

c#第6章 继承与多态性

例如: 例如: class Humen { public string name; name; public string sex; sex; public string work ; } class Teacher:Humen Teacher: { public string speciality ; public string department; department; } Human是基类 Teacher是派生类 Human是基类,Teacher是派生类,它拥有基类 是基类, 是派生类, 的全部成员。 的全部成员。
派生类隐藏基类成员 :用new关键字。 new关键字 关键字。 隐藏基类的字段成员: 隐藏基类的字段成员: 派生类可以声明与基类有相同的名称和类型的字 派生类可以声明与基类有相同的名称和类型的字 段成员来隐藏基类的字段。 来隐藏基类的字段 段成员来隐藏基类的字段。这时通过派生类引用 或对象访问的是派生类的字段, 或对象访问的是派生类的字段,基类的相应成员 被屏蔽了。但是通过指向派生类对象的基类引用 被屏蔽了。但是通过指向派生类对象的基类引用 访问的则是基类的字段。 访问的则是基类的字段。 隐藏基类的方法成员: 隐藏基类的方法成员: 派生类可以声明与基类有相同的方法名称和形参 表的方法成员来隐藏基类的方法 基类的方法, 表的方法成员来隐藏基类的方法,与返回类型无 这时通过派生类引用或对象访问的是派生类 关。这时通过派生类引用或对象访问的是派生类 的方法成员,基类的相应方法成员被屏蔽了。 的方法成员,基类的相应方法成员被屏蔽了。但 是通过指向派生类对象的基类引用访问的则是基 指向派生类对象的基类引用访问的则是 是通过指向派生类对象的基类引用访问的则是基 类的成员。 类的成员。 派生类中可以通过 可以通过base关键字访问被隐藏的基 在派生类中可以通过base关键字访问被隐藏的基 类成员。 类成员。 详见例MaskBase。 详见例MaskBase。

《面向对象程序设计》知识点

《面向对象程序设计》知识点

《面向对象程序设计》知识点《面向对象程序设计》是计算机科学中的重要概念,它是一种软件开发方法,将软件模型作为一个系统的集合来设计、分析和实现。

本文将重点介绍面向对象程序设计中的关键知识点,包括面向对象的基本概念、类与对象、继承与多态、封装和抽象等内容,以便读者全面了解和掌握面向对象程序设计的核心概念和方法。

一、面向对象的基本概念1. 面向对象编程的起源:面向对象编程(Object-Oriented Programming,简称OOP)起源于20世纪60年代,是一种基于对象的软件开发范式,它将数据和操作数据的方法组合到一个对象中,以及通过对象之间的交互来完成程序的设计。

2. 面向对象的特征:面向对象的程序设计具有封装、继承和多态的特征。

封装指的是将数据和处理数据的方法封装在对象中,继承指的是子类可以继承父类的属性和方法,多态指的是同一操作作用于不同对象上时可以有不同的行为。

3. 面向对象的优势:面向对象的程序设计具有代码复用性高、可维护性强、扩展性好、可靠性高等优势,可以提高程序的设计效率和质量。

二、类与对象1. 类的定义:类是一种抽象数据类型,用来描述具有相同属性和行为的对象的集合。

类用来创建对象的模板,包含数据成员和成员函数。

2. 对象的创建:对象是类的一个实例,是具体的数据和行为的封装体。

通过类实例化,可以创建多个对象来表示真实世界的实体。

3. 类的成员:类包含数据成员和成员函数。

数据成员表示对象的属性,成员函数表示对象的行为,可以进行数据的操作和处理。

三、继承与多态1. 继承:继承是指一个新类从现有类中派生出来,并且拥有现有类的属性和行为。

继承可以实现代码的复用,并且可以建立类之间的关系。

2. 多态:多态是指同一操作作用于不同对象上时可以有不同的行为。

多态通过虚函数和动态绑定实现,可以使程序具有更好的灵活性和扩展性。

四、封装和抽象1. 封装:封装是指将数据和数据的操作封装在类的内部,外部无法直接访问和修改类的数据。

第七章面向对象的Java实现继承和多态精品PPT课件

第七章面向对象的Java实现继承和多态精品PPT课件
4
• 掌握继承 • 掌握super关键字 • 掌握多态
本章目标
5
生活中的继承 2-1
• 生活中,继承的例子随处可见
动物
谁是父类? 谁是子类? 能说出继承的特点吗?
食草动物
食肉动物
继承需要符合的关系:is-a,父类更通用、子类更具体
6
生活中的继承 2-2
• 子类具有父类的一般特性(包括属性和行为), 以及自身特殊的特性
}
}
}
9
代码存在重复,违背了}“write once, only once”的原则
为什么需要继承 4-3
• 如何改进?有没有可能建立继承关系,让子类自动继承父 类的属性和方法?
Java教员是教员吗? .NET教员是教员吗?
教员
姓名 所在中心
授课 自我介绍
Java教员 .NET教员
10
public class Teacher {
} 使用继承,可以有效实现代码复用
11
如何实现继承 3-1
• 在Java语言中,用extends关键字来表示一个类 继承了另一个类,例如:
public class JavaTeacher2 extends Teacher { //其余代码省略
}
• 在父类中只定义一些通用的属性与方法,例如:
public class Teacher { private String name; // 教员姓名 private String school; // 所在中心 public Teacher(String myName, String mySchool) { //初始化属性值 } public void giveLesson() { //授课方法的具体实现 } public void introduction() { //自我介绍方法的具体实现 }

python面向对象程序设计的概念

python面向对象程序设计的概念Python 面向对象程序设计(Object Oriented Programming,OOP)是一种编程范式,它将数据和相关的操作封装在一起,形成一个对象。

下面是Python 面向对象程序设计的一些重要概念:1、对象:对象是面向对象编程的基本单位,它是一个数据结构和相关操作的组合。

对象具有属性和方法,可以对其进行操作和处理。

2、类:类是对象的定义,它描述了对象的属性和方法。

类定义了对象的类型,并用于创建对象的实例。

3、封装:封装是将对象的属性和方法结合在一起,隐藏其内部实现细节,只暴露必要的接口给外部使用。

这样可以提高代码的可维护性和安全性。

4、继承:继承是面向对象编程中的重要特性,它允许一个类从父类继承属性和方法。

子类可以继承父类的特性,并可以根据需要进行扩展和修改。

5、多态:多态是指不同的对象在接收到相同的消息(方法调用)时,能够根据自身的特性进行不同的响应。

这种特性使得代码更加灵活和可扩展。

6、实例:实例是类的具体表现,它是根据类创建的对象。

每个实例具有类定义的属性和方法,可以进行独立的操作和处理。

7、属性:属性是对象的特性或状态,用于描述对象的特征。

属性可以是数据类型的值,如整数、字符串等。

8、方法:方法是与对象相关的操作或函数,用于修改对象的属性或执行特定的任务。

方法可以接受参数,并返回结果。

9、构造函数:构造函数是类中的特殊方法,用于在创建对象时进行初始化操作。

它可以为对象的属性设置初始值。

10、访问修饰符:访问修饰符用于控制类的属性和方法的访问权限,包括公有的(public)、私有的(private)和受保护的(protected)。

通过使用这些概念,Python 面向对象程序设计可以更好地组织和管理代码,提高代码的重用性和可维护性。

c类的继承和多态例子

c类的继承和多态例子继承是面向对象编程中的重要概念之一,它允许一个类“继承”另一个类的属性和方法。

在C++中,继承分为三种类型:公有继承、私有继承和保护继承。

其中,公有继承是最常用的一种方式,也是实现多态的基础。

本文将通过一个例子来介绍C++中的公有继承和多态特性。

假设我们要设计一个动物园的系统,其中包含不同类型的动物。

首先,我们定义一个基类Animal,代表所有动物的共有属性和方法。

然后,派生出几个具体的动物类,如Lion(狮子)、Elephant (大象)和Monkey(猴子),它们都是Animal类的派生类。

1. 基类Animal的定义:```c++class Animal {public:Animal() {} // 构造函数virtual ~Animal() {} // 虚析构函数virtual void move() const = 0; // 纯虚函数,用于表示不同动物的移动方式protected:int age; // 年龄double weight; // 体重};```2. 派生类Lion的定义:```c++class Lion : public Animal {public:Lion(int a, double w) : Animal(), color("yellow") { age = a;weight = w;}void move() const {std::cout << "Lion is running." << std::endl;}private:std::string color; // 颜色};```3. 派生类Elephant的定义:```c++class Elephant : public Animal {public:Elephant(int a, double w) : Animal(), height(3.5) { age = a;weight = w;}void move() const {std::cout << "Elephant is walking." << std::endl; }private:double height; // 身高};```4. 派生类Monkey的定义:```c++class Monkey : public Animal {public:Monkey(int a, double w) : Animal(), num_bananas(5) {age = a;weight = w;}void move() const {std::cout << "Monkey is jumping." << std::endl;}private:int num_bananas; // 香蕉数目};```以上就是实现动物园系统的基本类定义。

面向对象程序设计的四个基本特征

面向对象程序设计的四个基本特征面向对象程序设计(Object-Oriented Programming,简称OOP)是一种常用的编程范式,它以对象作为程序的基本单元,通过封装、继承和多态来实现代码的重用、可扩展和易维护。

面向对象程序设计具有以下四个基本特征:封装、继承、多态和抽象。

一、封装封装是面向对象程序设计的基本特征之一,它将数据和方法组合在一个对象中,并对外部用户隐藏对象的内部实现细节。

封装通过定义类的成员访问权限来实现信息的隐藏和保护。

对外部用户而言,只需要了解对象的公共接口,而无需关心对象的内部实现。

封装提供了良好的模块化和信息隐藏机制,有助于提高代码的可维护性和可重用性。

二、继承继承是面向对象程序设计的另一个基本特征,它允许一个类从另一个类派生出来,并继承父类的属性和方法。

通过继承,子类可以重用父类的代码,并在此基础上进行扩展或修改。

继承提供了一种层次化的组织结构,有助于代码的重用和扩展。

同时,继承也体现了面向对象程序设计中的"is-a"关系,即子类是父类的一种特殊情况。

三、多态多态是面向对象程序设计的第三个基本特征,它允许不同的对象对相同的消息作出不同的响应。

多态通过方法的重写(覆盖)和方法的重载(重载)来实现。

方法的重写是指子类覆盖父类的方法,以实现自己的特定行为;方法的重载是指在同一个类中定义多个具有相同名字但参数列表不同的方法,以根据不同的参数类型选择合适的方法。

多态提供了一种灵活的方式来处理不同类型的对象,提高了代码的可扩展性和可维护性。

四、抽象抽象是面向对象程序设计的第四个基本特征,它通过接口和抽象类来定义对象的行为和属性,而无需关注具体的实现细节。

抽象类是一种无法实例化的类,它定义了一组抽象方法,子类必须实现这些抽象方法才能被实例化。

接口是一种纯粹的抽象类型,它只包含方法的声明而不包含具体的实现。

抽象类和接口提供了一种规范和约束,有助于代码的模块化和扩展。

Java继承与多态实验报告.doc

Java继承与多态实验报告.doc
Java的继承与多态实验报告
本报告致力于分析Java继承与多态的概念、原理和作用,以及相关实验过程及其结果。

继承,又称为分类,是Java面向对象程序设计语言中定义类之间关系的重要技术。

它使一个类可以使用另一个基类中定义的方法和属性,在基类中已经定义了一些功能,子
类可以对基类功能进行拓展与定制。

《Java技术手册》得出结论,继承可以有效提高软件的复用性、可维护性和可重用性,使大型的、复杂的程序有条理层次。

多态是Java中一种特殊的程序结构,允许不同类的对象对相同的消息作出不同的响应,由程序的消息而不是对象的类型来决定对象的行为。

它是Java多态性的基础,使程
序能够在不同对象上进行操作,统一实现。

从实验中,可以明显看出Java继承与多态之间的联系:多态必须依赖于继承,当子
类被创建时,它继承了母类的方法以及特性,这样,它才能以逐渐上升的方式处理所有消息,而多态给了子类独特-->性的功能。

同时,多态也方便了代码重用,因为子类会继承
母类的方法和属性。

此外,结果表明,多态的优点使程序可以提高可重用性,它也减少了代码的重复编写,同时允许特定类之外的类可以得到适用。

它促进了软件不断更新,因为多态给开发人员提
供了以对象层次组织代码的方法。

本练习涉及到Java继承与多态概念的整体概述和实现细节,为完全理解多态的概念
打下了坚实的基础。

它提供了一个理解和使用这些概念的有用方式和指导。

  1. 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
  2. 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
  3. 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。

9-15
重定义的继承模式(is-a)
Figure
draw()
Triangle
Rectangle
Circle
draw()
draw()
draw()
9-16
注意圆与点之间 关系不是has-a关系
扩充的继承模式(is-like-a)
Location x, y: int;
将圆看作一种 带有半径的点
Point
1)inaccessible(不可访问) 2)public 3)private 4)protected
9-22
存取方式 继承类型 public protectedted
private
public protected private
protected protected private
9-52
多继承的经典例子(C++语言的iostream.h)
istream
ostream
iostream
9-60
派生类的定义格式
{ public: //派生类公有成员… private: //派生类私有成员… };
有多个基类
class 派生类名:继承方式 基类名1, … 继承方式 基类名n
visible: boolean;
Circle
radius: double;
9-17
例: 定义基类Pen
class Pen { public: enum ink {off,on}; void set_status (ink); void set_location (int, int); private: int x; int y; int status; //状态 };
9-1
第八讲 继承与多态性(I)
• •
软件复用及其途径 继承:泛化的实现 ★★★ 继承中的对象初始化与收尾 ★★ 多继承与重复继承 继承的实例:纸牌游戏

• •

主题讨论:存储模型,与继承相关的两个设计原则★★★
9-2

两种is-a关系
分类(classification):描述实例与类型之间的关系。
9-20
继承概念1 - 继承方式
三种继承方式:
公有继承(public), 私有继承(private), 保护继承(protected)
不同继承方式的影响主要体现在:
•派生类成员对从基类继承的成员的访问控制。 •派生类对象对从基类继承成员的访问控制。
9-21
继承方式-继承的访问控制
不同的继承方式使得派生类从基类继承 的成员具有不同的访问控制权限,以实现 数据的安全性和共享性控制。 派生类成员(继承的成员+自增加的成 员)的访问权限:
9-5
继承
class ColoredBox:public Box class Box { { public: public: int width, height; int color; void SetWidth(int); void SetColor(int); void SetHeight(int); }; };
9-3
继承机制

继承是is-a关系在程序中的实现
is-a关系:在问题空间中描述概念与概念之间的关系。 利用现有概念来定义一个新的概念。 继承关系:在解空间中描述类与类之间的关系。 利用现有的类来定义一个新的类。

软件复用的思想
面向对象设计的一个重要指导原则是:不要每次都从头开始定义 一个新的类,而是将这个新的类作为一个或若干个现有类的泛化
inaccessible inaccessible inaccessible
9-23
构造方法未被继承

子类继承了什么
子类继承了父类和所有成员,包括方法和变量(域)。
构造方法并不是一个类的成员,所以没有被继承。

在C++中不能被继承的部分
1、构造函数;
2、析构函数;
3、用户定义的操作符;
4、用户定义的赋值符; 5、友元关系。
9-14
创建伪造 的构造函 数
继承的模式

两种不同的继承模式
① 重定义(overriding):仅重定义父类的操作而不引入新特征。 是比扩充更为重要、更加常见的继承模式。 子类型的接口与父类型完全相同,两者是完全相同的类型。
② 扩充(extending):引入父类所没有的新特征。
子类型与父类型有区别:更加丰富的内容,是父类型的特例。 Java语言的保留字extends表明了这种继承。 ③ 实际应用通常是上述两种方式的结合。
9-9

类型兼容
子对象(subobject):每一个子类的对象实例中都有一个父类的子对象。
子对象的类型是父类类型。
向上转换(upcasting):又称widening reference conversion。 S T,S是T的子类 不需要运行时检测,允许隐式转换。


Cleanser *c = new Detergent(); C->scrub(); //! Detergent *d = new Cleanser(); //! D->foam();
9-13
class ClxNotBase {public: ~ClxNotBase(); static ClxNotBase * NewlxNotBase(); static ClxNotBase * NewlxNotBase(const ClxNotB ase& rhs); private: ClxNotBase(); ClxNotBase(const ClxNotBase& rhs); }; ClxNotBase * ClxNotBase::NewlxNotBase() { // 调用真正的构造函数 return new ClxNotBase(); } ClxNotBase * ClxNotBase::NewlxNotBase(const Clx NotBase& rhs) { // 调用真正的拷贝构造函数 return new ClxNotBase(rhs); } 如果把类的构造函数声明为私有的,那么 我们就无法构造这个类的对象,
Tommy is a cat. 泛化(generalization):描述类型与类型之间的关系(子类型关系)。
Cats are animals.

注意它们的区别
泛化关系具有传递性;而分类关系不具有传递性。 继承所指的is-a关系是指泛化,而不是分类。 有学者提出新名词:用kind-of关系代替is-a关系。 The cat ia a kind of animals.
9-19
x y status set_status set_location
定义派生类(彩色钢笔)
class CPen: public Pen { public: void set_color(int); private: int color; };
x y status color
set_status set_location set_color
Lecture Notes on
Object-Oriented Technology
(Programming & Design)
(Fall 2010, Bachelor of Computer Science)
Duan shihong
duansh@ Office: Room 1203A ,Information Building
9-48
派生类的构造函数
派生类构造函数的一般形式: 派生类名::派生类名(基类所需的形参,本类成员所需的形参): 基类1(基类参数表1), „,基类n(基类参数表n), 对象成员1(对象参数表1), „,对象成员m(对象参数表m) { 本类基本类型数据成员初始化; } 1. 调用基类构造函数,调用顺序按照它们被继承时声明的顺序 (从左向右)。 2.调用成员对象的构造函数,调用顺序按照它们在类中声明的 顺序。 3. 派生类的构造函数体中的内容。
9-12
class ClxNotBase { public: ~ClxNotBase();
构造函数 私有,禁 止派生
private: ClxNotBase(); ClxNotBase(const ClxNotBase& rhs); };
如果把类的构造函数声明为私有的,那么 我们就无法构造这个类的对象,
c的静态类型
c的动态类型
9-11

对继承的狙击
有时候并不希望由客户程序自定义的子类代替某些类! Java里有很好的机制将一个类定义为final的或者将一个成员定义 为final的。 C++里如何实现禁止类被派生?

解决方案
1 构造函数声明为私有的。如果用户从该类派生一个类,那么在编译阶段就会得到 一个不能访问私有成员函数的错误信息。 2 创建伪造的构造函数:静态,返回的是对象指针 3 注意:用户在使用完该类对象后需要调用delete,释放资源。也可使用智能指针。
或特化。
9-4
class X{ int i; public: X( ) { i = 0;} void f(); }; class Y{ int j; public: X x; Y( ) { i = 0;} … };
X的对象
i
Y的对象
i j
子对象x
main() { Y y; y.x.f(); }
(composition)
ColoredBox cb; void main() { cb.SetWidth(5); cb.SetHeight(5); cb.SetColor(6); )
9-6
相关文档
最新文档