首页 技术 正文
技术 2022年11月21日
0 收藏 422 点赞 4,867 浏览 1153 个字

很奇怪的设计,需要靠着两个Keyword共同作用,才能完成多态——而不是类似Java那样的默认多态。所谓共同作用,即基类使用virtual 标示函数,子类使用override显示重写。

有点奇怪,MSDN说了一大堆情境,但我仍然认为增加了多义性与复杂性。

class MainClass
    {
        public static void Main (string[] args)
        {
         
            var s1 = new Student (“Jim”);
            s1.Say ();
            s1.Do ();

var p1 = s1 as Person;
            p1?.Say ();
            p1?.Do ();

var s2 = p1 as Student;
            s2?.Say ();
            s2?.Do ();

}
    }

class Person
    {
        public string Name { get; set;} = string.Empty;

public Person(string name)
        {
            Name = name;
        }

public  void Say()
        {
            WriteLine ($”{Name} Says:”);
        }

public virtual void Do()
        {
            WriteLine ($”{Name} Do:”);
        }
    }

class Student : Person
    {

public Student(string name) : base(name)
        {
        }

public  void Say()
        {
            WriteLine ($”Student {Name} Says:”);
        }

public override void Do()
        {
            WriteLine ($”Student {Name} Do:”);
        }
            
    }

Output:

  Student Jim Says:
  Student Jim Do:
  Jim Says:
  Student Jim Do:
  Student Jim Says:
  Student Jim Do:

不使用virtal & override在转型过程中并不会丢失实例信息,但是函数不存在多态特性。

相关推荐
python开发_常用的python模块及安装方法
adodb:我们领导推荐的数据库连接组件bsddb3:BerkeleyDB的连接组件Cheetah-1.0:我比较喜欢这个版本的cheeta…
日期:2022-11-24 点赞:878 阅读:8,954
Educational Codeforces Round 11 C. Hard Process 二分
C. Hard Process题目连接:http://www.codeforces.com/contest/660/problem/CDes…
日期:2022-11-24 点赞:807 阅读:5,479
下载Ubuntn 17.04 内核源代码
zengkefu@server1:/usr/src$ uname -aLinux server1 4.10.0-19-generic #21…
日期:2022-11-24 点赞:569 阅读:6,291
可用Active Desktop Calendar V7.86 注册码序列号
可用Active Desktop Calendar V7.86 注册码序列号Name: www.greendown.cn Code: &nb…
日期:2022-11-24 点赞:733 阅读:6,108
Android调用系统相机、自定义相机、处理大图片
Android调用系统相机和自定义相机实例本博文主要是介绍了android上使用相机进行拍照并显示的两种方式,并且由于涉及到要把拍到的照片显…
日期:2022-11-24 点赞:512 阅读:7,740
Struts的使用
一、Struts2的获取  Struts的官方网站为:http://struts.apache.org/  下载完Struts2的jar包,…
日期:2022-11-24 点赞:671 阅读:4,774