本人刚学C#有个小问题 麻烦大家了???

来源:百度知道 编辑:UC知道 时间:2024/05/17 09:14:36
父类 XXX=new 子类( )

它跟 子类 XXX=new 子类( ) 作用一样吗?为什么非要这样写??意思是什么??
希望能用一点通俗的语言

谢谢 了

呵呵,我看上面的说得不是很通俗.我也来加两句吧,下面是我的看法:
当父类是抽象类的时候,就不能用父类(即抽象类)来实例化对象.但可以这样:"父类(即抽象类)中变量指向子类的实例.也就是这种形式:父类 XXX=new 子类( ) ".这是怎么理解呢?
举个例子:
父类:动物类(抽象类)
子类:猫类 (继承了动物类)
通常我们都是这样来初始化对象:猫类 一个猫 = new 猫类();
但这样也是可以的: 动物类 一个动物 = new 猫类();
原因在于,动物类由于是一个抽象概念,他不能实例化出一只抽象的动物.但猫类是具体的,可以用于实例化对象.当把具有猫的属性和方法的实例猫赋给"一个动物时",这个过程叫做上转型,这时实例猫具体的只是动物所具有的属性和方法,去掉了实例猫本身所特有的属性了.
就像我们可以说:
1.这只猫是猫中的一只
2.这只猫是动物中的一只(这样说也是正确的,他不再把猫看成猫,而将他看得更广泛,看到了动物所具有的共性,呼略了猫的特性)

父类如果定义了纯虚函数的话,他就不能实例化,所以只能通过子类来实现
子类就不用说了,子类 XXX=NEW 子类()==实例化

我来个最通俗的解释,大家都知道 老子都要养家的,老子肯定是要管着儿子的,所以说,那个新建儿子实例并赋值给老子的行为, 相当于他老婆生了一个新儿子,然后交给老子养着, 而儿子越来越多该怎么办呢?
老子 一般都会有方法分辨到底是哪一个儿子的,不然就乱套了. 就通过父类里的一个方法, 方法里面有case 选择 语句,通过对传送过来的对象引用中的关键属性,做判断.

再说个和这个问题相关的设计模式,就是工厂模式,一般都是先写一个什么具体事情都不干的父类,只干一件事,就是对传送过来的对象进行判断,然后再传送给相应的子类去进行具体的操作.
而子类里面有方法来负责具体的操作.

如有问题,加QQ5255215

这是面向对象思想带来的一种新特性,它使得在我们的代码中采用细粒度的设计模式成为可能。设计模式是一种思想,可以通用于任何语言,而不仅仅是C#语言才能