C#与Java多态方面的语法差异
Posted 明-学以致用
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了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多态方面的语法差异的主要内容,如果未能解决你的问题,请参考以下文章
我是学java的,因公司原因 现在要转php求大神给说下php与java的差异