1 OOP概述
面向对象基于三个基本概念:数据抽象、继承和动态绑定。通过使用数据抽象,我们可以将类的接口与实现分离;使用继承,可以定义相似的类型并对其相似关系建模;使用动态绑定,可以在一定程度上忽略相似类型的区别,而以统一的方式使用它们的对象。
1.1 继承
继承是派生类与基类之间的关系,它们共享了一些公共的东西,而派生类特化了一些本质不同的东西。类与类之间的继承关系构成了继承层...
分类:
编程语言 时间:
2014-06-19 12:11:25
阅读次数:
318
OOP概述
面向对象程序设计(object-oriented programming)的核心思想是数据抽象、继承和动态绑定。
1.继承:
类的一种层次关系,通常在层次关系的根部有一个基类,其他类则直接或间接的继承基类而来。这些继承而来的类称为派生类。...
分类:
编程语言 时间:
2014-06-18 11:56:26
阅读次数:
211
一、由编译器生成的成员函数
1)默认的构造函数
默认构造函数定义为没有参数,或者有默认的参数值。当用户自己未定义时,系统可以提供。
自动生成的默认构造函数,会调用继承的基类的默认构造函数来构造派生类的基类部分。
若Star是一个类,则
Star orig;
Star array[6];都将需要默认构造函数。
如果自己定义了构造函数,则系统不会再生成默认构造函数,这个时候最好自己要定义...
分类:
编程语言 时间:
2014-06-16 12:23:39
阅读次数:
262
在C++中,public 公有继承被视为”is-a“关系。
class Animal{
public :
void Eat() { ... }
};
class Tiger :
public Animal{
public:
bool IsKing() {...}
};// Tiger 是一种Animal
如果public换成private,编译器不能将派生类对象转...
分类:
其他好文 时间:
2014-06-15 15:33:21
阅读次数:
258
扩展方法能够向现有类型“添加”方法,而无需创建新的派生类型、重新编译或以其他方式修改原始类型。 扩展方法是一种特殊的静态方法,但可以像扩展类型上的实例方法一样进行调用。 扩展方法是在一个静态类中定义的,并且扩展方法也要是静态方法,并且扩展方法的第一个参数为要扩展的类型,必须附加一个...
分类:
其他好文 时间:
2014-06-15 06:42:11
阅读次数:
180
扩展方法使你能够向现有类型“添加”方法,而无需创建新的派生类型、重新编译或以其他方式修改原始类型。 扩展方法是一种特殊的静态方法,但可以像扩展类型上的实例方法一样进行调用。 对于用 C# 和 Visual Basic 编写的客户端代码,调用扩展方法与调用在类型中实际定义的方法之间没有明显的差...
分类:
其他好文 时间:
2014-06-14 08:22:37
阅读次数:
207
定义为 virtual的 函数是基类期待派生类(derived class)重定义的,
基类期待 派生类继承的函数不能定义为虚函数。动态绑定:程序能 使用继承层次中任意类型的对象,无需关心对象的具体类型。
使用这些类的程序无须区分函数在基类还是在继承类中定义的。尽管不是必须,派生类一般会重定义基类中...
分类:
其他好文 时间:
2014-06-12 23:23:06
阅读次数:
518
1
OOP概述面向对象基于三个基本概念:数据抽象、继承和动态绑定。通过使用数据抽象,我们可以将类的接口与实现分离;使用继承,可以定义相似的类型并对其相似关系建模;使用动态绑定,可以在一定程度上忽略相似类型的区别,而以统一的方式使用它们的对象。1.1
继承继承是派生类与基类之间的关系,它们共享了一些公...
分类:
编程语言 时间:
2014-06-12 21:36:20
阅读次数:
338
1.在普通情况下,指向一种类型对象的指针不同意指向还有一种类型的对象,然而指向基类对象的指针能够指向该基类的共同拥有派生类对象(反过来不成立),这是执行时,多态的基础。指向基类队象的指针指向派生类对象后,能够訪问派生类中有基类继承下来的成员,但不能訪问那些派生类对象自己添加?的成员。2.一个含有虚函...
分类:
编程语言 时间:
2014-06-12 12:54:25
阅读次数:
213