类以及方法的重载、隐藏与重写
今天学习了关于面向对象的一些概念,也修正了过去对这些概念的一些理解的不正确的地方.C#中一个完整的类包括六个部分:私有字段(private field)、构造函数(Constructor)、公开属性(public property)、公共方法(public method)、私有方法(private method)、析构函数(destructor).其中的私有方法是在本类中使用,一般是供公共方法调用!属性使类能够以一种公开的方法获取和设置值,同时隐藏实现或验证代码。类的构造函数完成类的实例化和初始化。所谓的类的实例化是指在内存中为新创建的对象开辟一片内存区域。而类的初始化是在类的实例化的基础上,为类的各个字段赋值,即使是使用默认的构造函数也属如此,不过是在初始化的基础时候赋予的字段的默认值。析构函数,我们一般不写,因为.net有自己的垃圾回收机制.
而方法的重载是在一个类里面,有多个同名的方法,而方法的参数列表不同,返回类型也可能不同,但是单纯的凭返回类型不同,编译的时候是无法区分开两个名称及参数列表完全相同的两个方法的。方法的重载也是面向对象多态的一种。
而关于方法的隐藏与重写设计到类的继承的概念。派生类将继承基类除构造函数和析构函数外的所有成员。派生类里面的成员数目一定大于等于基类中的成员数目。而关于派生类对基类的同名方法的隐藏和覆盖问题,为了分清它们之间的区别,我真的是花了一番功夫。派生类如果要隐藏基类的同名方法,基类方法必须定义为 virtual,如果派生类中的同名方法前面没有 new关键字,则编译器将发出警告,该方法将有如存在 new 关键字一样执行操作。派生类的对象如果直接调用的话,将调用派生类的方法,但是如果派生类对象强制转化为子类对象再调用该方法时,将调用基类对应的方法。如果派生类的方法前面的关键字是override,则派生类重写与基类同名的方法,那么无论什么情况(包括把派生类对象强制转化为基类对象),派生类对象调用改方法时,都只会调用派生类的方法。