设计模式之前是学过的,这次报软考既是复习又是提高。软考需要通过java学习设计模式,之前学的虽然是C#,但设计模式的思想是一样的。话不多说直奔主题,下面先了解一下什么事策略模式。
策略模式定义了算法家族,分别封装起来,让它们之间可以互相转换,此模式让算法的变化不会影响到使用算法的客户。
举个例子:
现在有一个鸭子父类,我们需要它的之类有绿头鸭、红头鸭。只需要在父类里面写一个虚方法...
分类:
其他好文 时间:
2015-03-18 09:01:02
阅读次数:
108
Reference Link:http://www.yjbys.com/bbs/326026.htmlconst关键字用来声明编译时常量,readonly用来声明运行时常量密封类不能同时为抽象类可以覆写私有的虚方法吗? 答:不可以,甚至子类中无法访问父类中的私有方法base 表示当前对象基类的实例(...
分类:
Web程序 时间:
2015-03-18 00:57:52
阅读次数:
165
1、如果父类方法没有加virtual关键字,即不是一个虚方法,则在子类中只能隐藏基类方法,而不能覆盖。2、如果父类方法加了virtual关键字,即它是一个虚方法,在子类中一样可以隐藏。3、如果子类实现了父类相同的方法(相同的方法名称及签名),而没有new,在编译时会报警,但编译仍然能够通过!4、调用...
在C#的学习中,容易混淆virtual方法和abstract方法的使用,现在来讨论一下二者的区别。二者都牵涉到在派生类中与override的配合使用。一、Virtual方法(虚方法) virtual 关键字用于在基类中修饰方法。virtual的使用会有两种情况: 情况1:在基类中定义了virtual...
在delphi中, reintroduce作用当在子类中重载或者重新声明父类的虚方法时,使用 reintroduce 关键字告知编译器,可以消除警告信息.如: TParent = class procedure proc;virtual; end; TChild = class(TParent) p...
-多态:(转自CSND)通过继承,一个类可以用作多种类型:可以用作它自己的类型、任何基类型,或者在实现接口时用作任何接口类型。这称为多态性。C# 中的每种类型都是多态的。类型可用作它们自己的类型或用作 Object 实例,因为任何类型都自动将Object当作基类型。多态性不仅对派生类很重要,对基类也...
分类:
其他好文 时间:
2015-03-01 01:31:45
阅读次数:
146
4.4方法重载、隐藏与虚方法调用 由于子类对象同时“汇集了”父类和子类的所有公共方法,而C#并未对子类和父类的方法名称进行过多限制,因此,一个问题出现了: 如果子类中某个方法与父类方法的签名一样(即方法名和方法参数都一样),那当通过子类对象访问此方法时,访问的是子类还是父类所定义的方法? 让我们先从...
分类:
其他好文 时间:
2015-02-26 11:15:15
阅读次数:
135
前一篇隐藏的实例中,由于子类隐藏了父类的同名方法,如果不进行强制转换,就无法通过父类变量直接调用子类的同名方法,哪怕父类变量引用的是子类变量。我们希望的是每个对象“各司其职”。为了达到这个目的,可以在父类同名方法前加关键字virtual,表明这是一个虚方法,子类可以重写此方法:即在子类同名方法前加关...
分类:
其他好文 时间:
2015-02-24 20:59:49
阅读次数:
218
方法的重载:规定一个方法可以具有不同的实现,但方法的名称是相同的。如://同样是Man这个方法 public int Man(int age,int name){ ……}//重载public int Man(int age){ ……}重载的存在可以在主函数调用类的时候,根据对象所需灵活调用,...
结合IL的结果和C对象的方法表的Dump结果,相信看官已经明白为啥两次调用为啥会用不同了吧。 算了,还是简单描述一下吧:首先根据il的结果明显两次调用请求的方法是不同的;其次,你可以看到我们的C对象引用的方法表里面确实有两个Foo方法。 呵呵,这样同样类型的对象对不同方法调用的请求是不是就可以...
分类:
数据库 时间:
2015-02-17 18:47:09
阅读次数:
240