首页 > 代码库 > C#与Java多态方面的语法差异
C#与Java多态方面的语法差异
C#与Java多态方面的语法差异
2016-11-29
Java代码:
public static void main(String[] args) { Mother mother=new Mother(); mother.showName(); Mother human=new Son(); human.showName(); Son sona=new Son(); sona.showName();} public class Mother { public void showName(){ System.out.println("妈妈"); }}public class Son extends Mother { public void showName(){ System.out.println("儿子"); } }
结果:
妈妈儿子儿子
C#代码:
class Program { public static void Main() { Mother mother = new Mother(); mother.ShowName(); Mother human = new Son(); human.ShowName(); Son sona = new Son(); sona.ShowName(); Console.Read(); } } public class Mother { public virtual void ShowName() { Console.WriteLine("妈妈"); } } public class Son : Mother { public override void ShowName() { Console.WriteLine("儿子"); } }
结果:
妈妈儿子儿子
但如果把override去了,将会出现一行警告,但编译器不会报错:
警告 1 “ConsoleApplication1.Son.ShowName()”隐藏了继承的成员“ConsoleApplication1.Mother.ShowName()”。如果是有意隐藏,请使用关键字 new
结果为:
妈妈妈妈儿子
结论:
由此证明,C#默认情况下是不支持多态的,子类默认情况下有个new关键字。C#若要实现多台需要在方法前添加virtual和override
另外,多态指的是方法,详情见 只有多态方法,没有多态实例字段
C#与Java多态方面的语法差异
声明:以上内容来自用户投稿及互联网公开渠道收集整理发布,本网站不拥有所有权,未作人工编辑处理,也不承担相关法律责任,若内容有误或涉及侵权可进行投诉: 投诉/举报 工作人员会在5个工作日内联系你,一经查实,本站将立刻删除涉嫌侵权内容。