zoukankan      html  css  js  c++  java
  • 【CSharp】一个让你了解csharp的多态的程序

    using System;
    class A
    {
        public void show()
        {
            Console.WriteLine("A.show");
        }
        public virtual void play()   //定义为“virtual”,表明可以过载,不能过载非虚函数
        {
            Console.WriteLine("A.play");
        }
    }
    class B : A
    {
        public void show()  //覆盖(隐藏)A中的show方法,不加“show”,会编译警告
        {
            Console.WriteLine("B.show");
        }
        public override void play()   //过载A中的play方法,如果不加“override”,警告。
        {
            Console.WriteLine("B.play");
        }
    }
    class C : A
    {
        new public void show()    //隐藏A中的show方法,加“show”,不会编译警告
        {
            Console.WriteLine("C.show");
        }
        new public void play()  //隐藏A中的play方法,但是不构成过载,相当于另一个方法
        {
            Console.WriteLine("C.play");
        }
    }
    class D
    {
        public static void Main(string[] args)
        {
            A a = new A();
            B b = new B();
            C c = new C();

            a.show();
            a.play();

            b.show();
            b.play();

            c.show();
            c.play();

            a = b;
            a.show();
            a.play();

            a = c;
            a.show();
            a.play();
        }
    }
    输出结果为:
    A.show
    A.play
    B.show
    B.play
    C.show
    C.play
    A.show
    B.play
    A.show
    A.play

    注:在翻译中,作者对“override”,“new”,“overload”的翻译比较混乱,比如都有“覆盖”,“隐藏”,“重载”,“过载”等,但是个人认为:
    override----过载
    new---------覆盖、隐藏
    overload---重载
    比较贴切,当然,如何翻译并不重要,关键是区别他们之间的区别。
    override 的方法必须是:被声明为virtual的方法,其中可以过载,也可以不过载;被声明为abstract的方法,必须被override方法过载。过载之后可以实现多态性-动态联编。
    new:声明的方法用于隐藏基类中声明的同名函数,它与基类中的同名函数没有任何关系,仅仅同名而已。与多态无关。
    overload:重载,就是定义不同签名的同名方法,也是多态性的一种表现。

  • 相关阅读:
    UVA 10604 Chemical Reaction
    UVA 10635 Prince and Princess
    UVA 607 Scheduling Lectures
    Create Maximo Report
    安裝及配置Maximo Report步驟
    check blocking
    數據據類型縮寫
    .net
    poj3522
    poj1286
  • 原文地址:https://www.cnblogs.com/gaojing/p/724407.html
Copyright © 2011-2022 走看看