码迷,mamicode.com
首页 > 编程语言 > 详细

C#与Java多态方面的语法差异

时间:2016-11-29 19:15:38      阅读:186      评论:0      收藏:0      [点我收藏+]

标签:code   write   href   other   com   多态   read   static   证明   

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多态方面的语法差异

标签:code   write   href   other   com   多态   read   static   证明   

原文地址:http://www.cnblogs.com/Ming8006/p/6114604.html

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!