本帖最后由 小狸 于 2014-4-28 01:07 编辑
当子类从基类继承时,它会获得基类的所有方法、字段、属性和事件。若要更改基类的数据和行为,有两种方法:
1.override 重写虚拟的基类方法;
2.new 使用新的派生成员替换基类的方法;
两者的区别在于。override 会直接“覆盖掉基类的方法”;而new后,没有使用到基类的方法,而是直接重新定义了子类的方法。
例如:- using System;
- using System.Text;
- namespace over
- {
- class Program
- {
- static void Main(string[] args)
- {
- BaseClass bc = new BaseClass();
- DerivedClass dc = new DerivedClass();
- BaseClass bcdc = new DerivedClass();//使用子类的对象实例化基类的对象;
- bc.Method1();
- bc.Method2();
- dc.Method1();
- dc.Method2();
- bcdc.Method1();
- bcdc.Method2();
- Console.ReadLine();
- }
- }
- class BaseClass
- {
- public virtual void Method1() //基类虚方法1
- {
- Console.WriteLine("基类.Method1");
- }
- public virtual void Method2() //基类虚方法2
- {
- Console.WriteLine("基类.Method2");
- }
- }
- class DerivedClass : BaseClass
- {
- public override void Method1() //override
- {
- Console.WriteLine("子类.Method1");
- }
- public new void Method2() //new
- {
- Console.WriteLine("子类.Method2");
- }
- }
- }
复制代码
结果为:基类.Method1
基类.Method2
子类.Method1
子类.Method2
子类.Method1
基类.Method2
|