(精通C#编程)实例理解overwrite virtual new三者的区别
2007-04-06 10:18
483 查看
overwrite
virtual
new
三者的区别:
overwrite 在原来的内存空间上重新写。
virtual 对所声明的接口进行虚拟化(默认)即,void。
new 创建新的内存空间。
事不易迟看看下面例子就可以进一步一了解三者的区别了:
using System;
abstract public class contact
{
public virtual string prinf()
{
return ("这是虚方法");
}
}
public class class1:contact
{
public override string prinf()
{
return ("这是新的方法");
}
}
public class class2:contact
{
public new string prinf()
{
return ("这是另一个新的方法");
}
}
public class text
{
public static void Main()
{
contact [] contacts=new contact [2];
contacts[0]=new class1;
contacts[1]=new class2;
foreach(contact ct in contacts)
{
Console.WriteLine(ct.printf);
}
}
}
最后我们看到的结果是
这是新的方法
这是虚方法
而没有看见“这是另一个新的方法”,这是因为class2没有重载虚方法,而是重新定义了一个方法!
这就是两者的区别!!!
virtual
new
三者的区别:
overwrite 在原来的内存空间上重新写。
virtual 对所声明的接口进行虚拟化(默认)即,void。
new 创建新的内存空间。
事不易迟看看下面例子就可以进一步一了解三者的区别了:
using System;
abstract public class contact
{
public virtual string prinf()
{
return ("这是虚方法");
}
}
public class class1:contact
{
public override string prinf()
{
return ("这是新的方法");
}
}
public class class2:contact
{
public new string prinf()
{
return ("这是另一个新的方法");
}
}
public class text
{
public static void Main()
{
contact [] contacts=new contact [2];
contacts[0]=new class1;
contacts[1]=new class2;
foreach(contact ct in contacts)
{
Console.WriteLine(ct.printf);
}
}
}
最后我们看到的结果是
这是新的方法
这是虚方法
而没有看见“这是另一个新的方法”,这是因为class2没有重载虚方法,而是重新定义了一个方法!
这就是两者的区别!!!
相关文章推荐
- 深入理解C#中new、override、virtual关键字的区别
- overload override Virtual new区别
- 声明一个实例,是否使用new的区别
- 继承父类使用关键字virtual和new的区别
- 温故而知新:new与override的差异以及virtual方法与abstract方法的区别
- new、new()和new[]三者的区别
- override 和 new;virtual 、 abstract、interface 的区别
- Java内存的一点理解, 静态方法和实例方法的区别及使用场景
- C++ 对象和实例的区别,以及用new和不用new创建类对象区别
- Class.forName()、Class.forName().newInstance() 、New 三者区别!
- WCF三种实例激活的类型——实践理解三种类型的区别
- C++ 对象和实例的区别,以及用new和不用new创建类对象区别
- new和Virtual的区别
- C#中new、override、virtual关键字的区别
- Class.forName()、Class.forName().newInstance() 、New 三者区别!
- C++ 对象和实例的区别,以及用new和不用new创建类对象区别
- 浅析C#中new、override、virtual关键字的区别
- Class.forName()、Class.forName().newInstance() 、New 三者区别!
- 浅析C#中new、override、virtual关键字的区别
- Class.forName(),newInstance(),New 三者区别