using System;
using System.Collections.Generic;
using System.Text;namespace test
{
class Program
{
static void Main(string[] args)
{
Father f=new Father();
Child c=new Child();
f = c;
f.s();
Console.ReadKey();
}
class Father
{
public virtual void s()
{
Console.WriteLine("我是父类");
}
}
class Child:Father
{
public override void s()
{
base.s();
Console.WriteLine("我是子类");
}
}
}
} 当要调用派生类中重写方法时 f = c;f.s(); 这个写法跟直接用派生类的实例c.s();来调用的结果一样啊 我觉得大多数类似的程序书上用的是第一种写法 先把派生类隐式转换成基类 再用基类来调用重写的方法 和第二种写法有什么区别吗?
using System.Collections.Generic;
using System.Text;namespace test
{
class Program
{
static void Main(string[] args)
{
Father f=new Father();
Child c=new Child();
f = c;
f.s();
Console.ReadKey();
}
class Father
{
public virtual void s()
{
Console.WriteLine("我是父类");
}
}
class Child:Father
{
public override void s()
{
base.s();
Console.WriteLine("我是子类");
}
}
}
} 当要调用派生类中重写方法时 f = c;f.s(); 这个写法跟直接用派生类的实例c.s();来调用的结果一样啊 我觉得大多数类似的程序书上用的是第一种写法 先把派生类隐式转换成基类 再用基类来调用重写的方法 和第二种写法有什么区别吗?
{
instance.SomeWork();
}设想下BaseClass如果有10个子类,难道要写10个方法?
这就是多态的好处。可以用基类来调用统一的行为。