汪的爱琪 2023-10-22 11:32 采纳率: 67.5%
浏览 8
已结题

C#多态问题,普通方法和虚方法

我觉得为什么会有虚方法,毕竟覆盖方法有很多种方式,我感觉虚方法以及其他不是有点多余了吗,我有点搞不清楚多态,所以我做了这样一个实验

    public class Polymorphism1
    {
        public void print()
        {
            Console.WriteLine("我是polymorphism1");
        }
    }
    public class Polymorphism2 : Polymorphism1
    {
        public void print()
        {
            Console.WriteLine("我是polymorphism1");
        }
    }

然后我输出

   class Program
    {

        static void Main(string[] args)
        {
            Polymorphism1 p1 = new Polymorphism1();
            Polymorphism1 p2 = new Polymorphism2();
            Polymorphism2 p3 = (Polymorphism2)p2;
            Polymorphism2 p4 = new Polymorphism2 ();
            p1.print();
            p2.print();
            p3.print();
            p4.print();
            Console.Read();
        }
    }

输出结果是

img


为什么都是父类的,子类的一个都没有,是不是只要不覆盖父类方法就不能实现多态,调用的永远是父类方法,我现在仅仅知道子类可以调用父类的方法,继承父类的一切

  • 写回答

2条回答 默认 最新

  • wanghui0380 2023-10-22 14:14
    关注

    如果你是一个数学家提出了一个推论,一个猜想。然后你不知道怎么证明。
    你觉着你用代码表述是什么?当然就是一个虚方法。

    我们设计代码也一样,假设30年前。另一个大大就想到了支付宝这种东西,但是当时他知道会有,但是没实现,不过他觉着依赖这个抽象的“支付宝”可以做很多预研的设计和未来的许多有意思的产品。
    你猜他会怎么办。
    他当然写成一个抽象类,写成虚方法。

    OOP的核心就是可以先不管实现,可以先做假设,先做抽象,先做推论。然后你在去证明他符合要求。

    本回答被题主选为最佳回答 , 对您是否有帮助呢?
    评论 编辑记录
查看更多回答(1条)

报告相同问题?

问题事件

  • 系统已结题 1月27日
  • 已采纳回答 1月19日
  • 创建了问题 10月22日

悬赏问题

  • ¥15 有人会用py或者r画这种图吗
  • ¥15 MOD04_3K图像预处理
  • ¥15 [VASP]关于超胞大小和k 点网格的收敛性测试
  • ¥15 pip下载paddle2onnx离谱错误
  • ¥60 db2move nlzxams import 导出db2备份数据报错
  • ¥15 关于#python#的问题:全文总结功能咨询
  • ¥15 俄罗斯方块中无法同时消除多个满行
  • ¥15 使用gojs3.0,如何在nodeDataArray设置好text的位置,再go.TextBlock alignment中进行相应的改变
  • ¥15 psfusion图像融合指标很低
  • ¥15 银河麒麟linux系统如何修改/etc/hosts权限为777