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的差异

java 代码片段

Kotlin VS Java:基本语法差异

.NET Core CSharp初级篇 1-6 类的多态与继承

Java语法包 继承 多态 抽象类 接口

Java 到 C# 尝试学习和理解两者之间的差异 [关闭]