把new弄明白
在代码中,关键字new大家是一见如故。
1、使用new的方式一
我们在进行面向对象开发时,动不动就创建对象。类作为具体实例的抽象,我们当然无法去直接使用。
作为设计师,我们需要做的就是不断的创建多个类,设计这个类的方法和属性。
如今的软件行业更多的像是建筑业。建筑师设计好一幢建筑的模型,包括它的外观,结构,所用的素材。
而我们的new,就是建筑领域里的工程队,为设计师设计出来的抽象创建一个个具体的,如房顶,窗户,厨房等等,最后组建成我们的系统。当然最后的建筑是否伟大,还得取决于架构师。但我们'new'朋友可以说是矜矜业业,你要创建对象,你就调用一下。在.net运行环境中,不用去担心最后对象的垃圾回收问题。
在设计模式中,有一种很有意思的工厂模式,真如现实中工厂的原型相类似。当我们想生产饼干时,OK,你按动一下我们这个工厂中的生产饼干的开关,就可以创建了。
2、使用new的方式二
我们知道有了new,可以为对象很方便地创建内存空间。关键字new还有另外一种作用。
看下面的类的关系图:
学生类和教师类共同继承于Person类,但他们有共同的方法Say().
这个时候有人会想你把基类Person中的Say加上Virtual声明为虚方法,然后在Student类中用override 修饰Say,重写一下。
但如果Person类Say方法并未被声明为Virsual方法,那又该怎么办呢?修改Person类违背了开放和封闭原则。设计Person类的A君,不希望自己写的类被别人修改。
好吧,想继承Person类的B君也要发言Say()一下,没办法,让我们来使用new关键字,来重新设计一个同名的方法Say()吧。
要注意的是,B君设计的Student类中Say()方法已经和A君设计的Person类Say()毫无关系了.
3、使用new的方式三
new的使用还真是挺多的,别急,下面的一种用法可以说有不少初学者会忽略的。