以前已经用过很多了,算会,但不精,何况.NET 2003都没太多接触,现在已经是.NET 2005了,好多都变了,现在有点时间找点资料来快速的补补。
1、如何理解构造函数和析构函数说的普通点,就是启动时候用到构造函数,结束时用到析构函数。明白了吗?
因为在C中经常因为数据的初始化问题出错,所以在C++加入了构造/析构函数。构造函数用于对象的初始化和资源的分配,析构函数用于资源的释放。而且是被语言强制执行的。
一个是开始时调用一个是结束时调用
一个在内存分配后调用,一个在内存释放前调用当申明一个某个类的对象或new一个对象时都会先执行该类的构造函数,如果是一个局部对象变量,当该对象离开所在函数作用域时,会自动调用该类的析构函数;如果事先new了一个变量,则当delete时,调用析构函数;如果是全局或静态对象,则要到整个程序结束时,才调用析构函数;
进屋必须先开门,出来还要关门
杀鸡前要磨磨刀,杀完后要洗洗手
2、理解虚方法和抽像方法
基类中声明虑方法,就是希望子类能够重载它。而抽像方法是在基类中只提到方法,但没有实际内容,希望子类去填充实际的动作。因为是"抽象",所以它不能实例化,它预先定义了其子类的一些动作,使得代码得到重用
所谓"抽象"可以理解成"共性".也就是说找到一组对象中的相同的属性和行为.
从面向对象设计的角度来看,抽象类是为外界提供公共接口的一种方式,这一点上很像接口。但是抽象类可以给予某些基础实现,实现比接口更加自由的代码复用。 在实现某些系统需要考虑设计模式时,抽象类可以更好地担任起“守门人”角色,即参数类型为抽象类,而实际传递的参数则是该类的子类甚至是子类的子类等等,在装饰模式、工厂模式、桥模式以及适配器模式等等均有应用,在这方面有着比接口更灵活的应用。 更正楼上的一个观点“抽象类是不能密封的”,在.NET Framework2.0中,“抽象的密封类”实际上就是静态类,它不提供类的实例,且不能被继承,主要用于封装常用功能和方法。如类库中的System.Math、System.Convert等。