1,C++面向对象程序设计最重要的原则:
public继承意味着"是一种(isa)"的关系.
例如:
class D : public class B
你便告诉编译器,每一个型别为D的对象同时也是型别为B的对象.
只要是B对象派得上用场的地方,D对象也可以派上用场.
2,看一个实际和理论偏离的例子:
class Bird
{
public:
virtual void fly(); //鸟可以飞
...
};
class Penguin : public Bird//企鹅是一种鸟,
{
...
}
//但是是不能飞的.
可见"适用于所有软件"的完美设计是不存在的,最佳设计,取决于系统希望做什么事.
如果你的程序对于飞行一无所知,那么上述设计也不失为完美有效.
3,如果一定考虑飞行,可以这么做.
class Bird //不声明fly
{
public:
};
class FlyBird : public Bird//可以飞的鸟,
{
public:
virtual void fly();
...
}
class NonFlyBird : public Bird//不可以飞的鸟,
{
public:
... //没有声明fly
}
class Penguin : public NonFlyBird//企鹅是一种鸟,
{
...//没有声明fly
}
分享到:
相关推荐
条款35: 使公有继承体现 "是一个" 的含义 条款36: 区分接口继承和实现继承 条款37: 决不要重新定义继承而来的非虚函数 条款38: 决不要重新定义继承而来的缺省参数值 条款39: 避免 "向下转换" 继承层次 条款40: 通过...
条款32:确定你的public继承塑模出is-a关系 make sure public inheritance models “is-a.” 条款33:避免遮掩继承而来的名称 avoid hiding inherited names. 条款34:区分接口继承和实现继承 differentiate between...
条款32:确定你的public继承塑模出is-a关系 条款33:避免遮掩继承而来的名称 条款34:区分接口继承和实现继承 条款35:考虚virtual函数以外的其他选择 条款36:绝不重新定义继承而来的non-virtual函数 条款37:...
Java语言程序设计第四章 继承与多态 本资源摘要信息主要讲解Java语言程序设计第四章中的继承与多态概念。继承是一种机制,允许一个类继承另一个类的成员变量和方法,从而实现代码的重用。多态是指一个类的对象可以...
2. 继承关系建模:继承可以建模现实世界中的继承关系,如车辆的继承关系,即 Car 。 3. 提高代码的灵活性:继承允许子类继承父类的方法,并可以重写这些方法以满足新的需求。 继承的类型: 1. 单继承:一个子类...
Hibernate继承映射是将Java类的继承关系映射到数据库表的一种策略,使得对象模型的复杂性能够平滑地转化为关系数据库模型。本篇将详细介绍Hibernate继承映射的第一种策略——每棵类继承树对应一张表,即单一表继承...
在C++编程中,继承与派生是面向对象编程的核心概念,它们允许我们构建复杂的软件结构,实现代码复用,以及更好地模拟现实世界中的对象和关系。本章主要讲解了以下几个方面: 1. 类的继承与派生: - 继承是指一个类...
赋值运算符(=)**:`std::string`类中已经有一个默认的赋值运算符,但如果你希望在复制字符串时执行特殊操作(例如深拷贝),你可以重写这个运算符。例如: ```cpp class MyString : public std::string { public: ...
通过`class DerivedClass : access-specifier BaseClass`这样的语法实现继承,其中`DerivedClass`是派生类,`BaseClass`是基类,`access-specifier`可以是`public`、`protected`或`private`,分别代表公有继承、保护...
示例代码展示了`Student`类和`GraduateStudent`类的继承关系,其中`GraduateStudent`是`Student`的公有派生类,继承了`Student`的属性和方法,并添加了新的成员。通过`public`关键字,`Student`类的公有和保护成员在...
继承树是描述类继承关系的图形表示,每个子类都继承了祖先类的所有属性和行为。派生方式有两种:公有派生(public)和私有派生(private)。公有派生下,基类的公有和保护成员在派生类中保持原有的访问权限;私有...
在C++编程语言中,虚拟多重继承(Virtual Multiple Inheritance,VMI)是一种高级特性,它允许一个类从多个基类继承,其中一个或多个基类可能是通过其他基类间接继承的。这种继承方式的主要目的是解决“菱形问题”...
### 学习笔记: 抽象封装、继承、多态 #### 一、面向对象的基本概念 面向对象编程(Object-Oriented Programming, OOP)是一种编程范式,它使用“对象”来设计软件。对象是由数据(即字段或属性)和对这些数据进行...
本节课程主要讲解了C++编程语言中的继承和多态性相关知识,涉及到继承的概念、继承类型、继承体现的思想、基类和派生类的关系、单继承、多继承、纯虚函数和抽象类等。 继承是面向对象编程中一个重要的概念,指的是...
继承:即生活中的包含关系;(大三学生继承于大学生,大学生继承于学生) 特点:可以多层次继承(多少层都可以),但是每次只能继承一个 子类可以调用(继承)父类的属性和方法,不需要再定义属性,方法。 ...
在C#编程语言中,`public` 是一个访问修饰符,它在类、接口、方法、属性、事件和字段的定义中广泛使用。本压缩包文件"Public_public_"可能包含了一系列与C#中使用`public`关键字相关的示例或教程。下面我们将详细...
C++的继承与多态是面向对象编程中的核心概念,为代码复用和设计灵活性提供了基础。继承允许创建一个新的类,即派生类,它基于现有的类(基类或超类)并可以扩展其功能。这体现了从简单到复杂的认识过程,通过层次...
**条款14:确定基类有虚析构函数** - **背景**:当一个类作为其他类的基类时,应确保其析构函数为虚函数。 - **原因**:如果没有虚析构函数,通过基类指针删除派生类对象时会导致资源泄露。 - **示例**: ```cpp ...