先看这样一段代码:
namespace @virtual
{
class A
{
public void print()
{
Console.WriteLine("base");
}
}
class a :A{
public void print()
{
Console.WriteLine("derive");
}
}
class Program
{
static void Main(string[] args)
{
A p = new A();
p.print();
p = new a();
p.print();
Console.ReadKey();
}
}
}output:
base
base
p调用了基类的同名方法,如果想使用子类的print()需要用virtual修饰基类的print()再在子类中override重写print(),那样才能调用派生类的方法
namespace @virtual
{
class A
{
public virtual void print()
{
Console.WriteLine("base");
}
}
class a :A{
public override void print()
{
Console.WriteLine("derive");
}
}
class Program
{
static void Main(string[] args)
{
A p = new A();
p.print();
p = new a();
p.print();
Console.ReadKey();
}
}
}output:
base
derive
namespace @virtual
{
class A
{
public void print()
{
Console.WriteLine("base");
}
}
class a :A{
public void print()
{
Console.WriteLine("derive");
}
}
class Program
{
static void Main(string[] args)
{
A p = new A();
p.print();
a p1 = new a();
p1.print();
Console.ReadKey();
}
}
}output:
base
derive
base则是对在派生类里对基类成员的访问。在基类数据成员或方法被子类同名成员隐藏的情况下,它能发挥巨大的作用。
namespace @base
{
class A
{
public void print()
{
Console.WriteLine("base");
}
}
class a :A{
public void print()
{
Console.WriteLine("derive");
}
public void fatherPrint()
{
base.print();
}
}
class Program
{
static void Main(string[] args)
{
a p1 = new a();
p1.fatherPrint();
p1.print();
Console.ReadKey();
}
}
}output:
base
derive
本文深入解析了C#编程中虚方法的使用及其与多态性的关系,通过实例展示了如何在基类与派生类间实现方法重写与调用,以及在不同场景下虚方法的应用价值。
2422

被折叠的 条评论
为什么被折叠?



