虚方法【只有虚方法或者抽象方法才能被子类方法重写】
2014-09-19 16:58
267 查看
<1>
<2>虚方法实例
using System; using System.Collections.Generic; using System.Linq; using System.Text; namespace Test { //从设计角度考量,通常将子类中共有的但却容易变化的特征抽取为虚函数在父类中定义,而在子类中通过覆写来重新实现其操作。 class A { public virtual void MyMthod() //虚方法可以有方法体,而抽象方法不可以有。 { Console.WriteLine("我是一个虚方法"); } } class B : A { public override void MyMthod() //重写父类中的虚方法 { Console.WriteLine("我重写了父类的虚方法"); } } class C : A //C类继承了A类。它可以override重写父类中的虚方法也可以不重写 { public void Sum(int a, int b) { Console.WriteLine(a + b); } } class InheritanceTest1 { static void Main(string[] args) { B b = new B(); b.MyMthod(); //输出:我重写在父类的虚方法 A a = new A(); a = b; //将变量a指向变量b指向的对象 a.MyMthod(); //所以这里同样调用的也是B类里的MyMthod()方法。所以输出:我重写在父类的虚方法 C c = new C(); c.MyMthod(); //因为C类没有重写父类的虚方法。所以这里调用的是父类的MyMthod()方法,所以这里输出:我是一个虚方法 Console.ReadKey(); } } }
<2>虚方法实例
using System; using System.Collections.Generic; using System.Linq; using System.Text; namespace Test { //从设计角度考量,通常将子类中共有的但却容易变化的特征抽取为虚函数在父类中定义,而在子类中通过覆写来重新实现其操作。 class Person { public virtual void SayHello() //虚方法可以有方法体,而抽象方法不可以有。 { Console.WriteLine("我是一个人,我会说话"); } } class Boy : Person { public void Features() { Console.WriteLine("我有JJ"); } } class Girl : Person //Girl类继承了Person类。它可以override重写父类中的虚方法也可以不重写 { public void Features() { Console.WriteLine("我有胸部"); } } class 残疾人 : Person { public override void SayHello() //因为这里子类有特殊需求。所以这里重写了父类的虚方法。 { Console.WriteLine("我嗓子哑了,不会说话了"); } } class InheritanceTest1 { static void Main(string[] args) { Boy boy = new Boy (); boy.SayHello(); //因为我是人,所以我有人共有的说话的能力 boy.Features(); //因为我是男的,我的特征是长了JJ Girl girl = new Girl(); girl.SayHello(); //因为我是人,所以我有人共有的说话的能力 girl.Features(); //因为是我女的,我的特征是长了胸部 残疾人 c = new 残疾人(); c.SayHello(); //因为我现在嗓子哑了,所以我不能说话了。 Console.ReadKey(); } } }
相关文章推荐
- 虚方法【仅仅有虚方法或者抽象方法才干被子类方法重写】
- C#第2次试验(1).创建一个抽象类A,该类中包含一个求两个数之和抽象方法。创建一个子类B,在B中重写求和方法,且使用方法重载使得方法可以分别计算整数、双精度、字符串。
- 创建一个抽象类A,该类中包含一个求两个数之和抽象方法。创建一个子类B,在B中重写求和方法,且使用方法重载使得
- 子类A继承抽象类B,就一定要重写B的抽象方法
- Java 子类继承父类方法的重写(或者覆盖,override)
- JavaSE8基础 子类必须重写所继承的抽象类中所有抽象方法
- 2.创建一个抽象类A,该类中包含一个求两个数之和抽象方法。创建一个子类B,在B中重写求和方法,且使用方法重载使得方法可以分别计算整数、双精度、字符串
- C#--第2周实验--任务13--创建一个抽象类A,创建一个子类B,在B中重写求和方法,且使用方法重载使得方法可以分别计算整数、双精度、字符串。
- C#中包含子类集合的类的Equals方法重写
- new 修饰符、虚方法、重写方法、抽象方法
- 子类重写父类的方法时声明抛出异常不能比父类范围大(转)
- java方法重写的时候,一个调用父类还是子类方法的问题
- 只有登录成功后,才能访问一些页面(2种方法:1.通过判断sesssion是否为空)2.过滤器Filter
- 只有经过验证的用户才能访问某个页面实现方法
- swing 中重写repaint方法后画图会出现闪烁或者不及时更新的解决方法
- 继承ViewGroup后的子类如何重写onMeasure方法
- Q:怎么才能够让子类强制调用父类的方法
- 方法的覆盖(override)或者重写
- 没有virtual的方法子类是否可以重写?
- 在TFileListBox的子类里重写ReadFileNames那个虚方法(见filectrl.pas),根据文件创建时间进行排序。