JUST DO IT ~

我只想当个程序员

方法 new override virtual

摘 :  http://hacker.cnblogs.com/archive/2004/08/10/31774.aspx

对virtual的说明是对的:(它一般用在基类中,子类中用override)
1.无virtual时,编译期就确定方法的类型了。也即:无法实现多态了。
2.有vitual时,方法在运行时确定类型。可以实现多态,只要子类override基类的vitual方法。(也就是楼主的第2点)。

实现java  动态调用 

 
另外取个方法 与原来无关.


对于new没有说清楚:
new与virtual并没有必然的联系。从字面上看,new声明的方法是一个“新”方法,与基类完全没有关系(虽然不幸与基类的某个方法同名同参)。也即:通过向上转型(如:基类 引用名=new 子类())得到的引用将无法看到子类中new出来的方法。所以会出现楼主第3点中的结果。

 

 







using System; 

public class ClassFather 



public string s1; 

// virtual public void VirFun() 

public void VirFun() 

{ Console.WriteLine( 
"base  classfather virFun:"+ s1 );} 




public class ClassBoy : ClassFather 



public new void VirFun() 

base.VirFun();} 




public class ClassGirl : ClassFather 



public new void VirFun() 



base.VirFun(); 

Console.WriteLine( s1 ); 






public class Test 



public static void Main() 



ClassFather a 
= new ClassFather(); 

a.s1 
= "father"

a.VirFun(); 


ClassFather b 
= new ClassBoy(); 

b.s1 
= "boy"

b.VirFun(); 


ClassFather c 
= new ClassGirl(); 

c.s1 
= "girl"

c.VirFun(); 








using System; 


public class ClassFather 



public string s1; 

virtual public void VirFun() 

{ Console.WriteLine( "ClassFather  virfun()(: "+ s1 );} 

}
 


public class ClassBoy : ClassFather 



public override void VirFun() 

{
Console.WriteLine( 
"ClassBoy  virfun() : "+ s1 );   // base.VirFun();} 

}
 


public class ClassGirl : ClassFather 



public new void VirFun() 



//base.VirFun(); 

//Console.WriteLine( s1 ); 

 Console.WriteLine( 
"ClassGirl new  virfun() : "+ s1 );

}
 

}
 


public class Test 



public static void Main() 



ClassFather a 
= new ClassFather(); 

a.s1 
= "father"

a.VirFun(); 


ClassFather b 
= new ClassBoy(); 

b.s1 
= "boy"

b.VirFun(); 


ClassFather c 
= new ClassGirl(); 

c.s1 
= "girl"

c.VirFun(); 

}
 

}



posted on 2008-08-29 08:26 小高 阅读(220) 评论(0)  编辑  收藏 所属分类: DotNet


只有注册用户登录后才能发表评论。


网站导航:
 

导航

<2008年8月>
272829303112
3456789
10111213141516
17181920212223
24252627282930
31123456

统计

常用链接

留言簿(3)

随笔分类(352)

收藏夹(19)

关注的blog

手册

搜索

积分与排名

最新评论

阅读排行榜

评论排行榜