• 这样写为什么不出错:point rp=new rectpoint(12, 15);


    在测试这些程序中发现一个问题,这样的代码程序可以通过:

    using System;

    static class m
    {
     static void Main()
     {
      point rp=new rectpoint(12, 15);
      rp.show();
     }
    }

    class point
    {
     protected int m_x;
     protected int m_y;

     public virtual void show()
     {
       Console.WriteLine("x=" + m_x.ToString() + " y=" + m_y.ToString());
     }
    }

    class rectpoint:point
    {
     public rectpoint(int x0, int y0)
     {
      m_x=x0;
      m_y=y0;
     }

     public override void show()
     {
      Console.WriteLine("rect: ");
      base.show();
     }
    }
    问题来自于第7行:point rp=new rectpoint(12, 15);,我想正确的写法应该是rectpoint rp=new rectpoint(12, 15);,但拷贝代码时,没有把point改为rectpoint,但程序运行正常,运行的结果还是rectpoint的show。很后面才发现这个问题,难道是对象是允许定义成它的父类的吗?定义完成后,虽然它执行的都是子类的代码,但如果子类新增加的东西,编译器是不让通过的,即对象只能执行父类的成员函数。

  • 相关阅读:
    跳板机操作
    常用进制之间的转换
    vim加脚本注释和文本加密
    LAMP框架
    wiki团队协作软件Confluence
    NFS网络文件系统
    ORACLE-12C-RAC INSTALL
    通过DB_LINK按照分区表抽取数据
    Oracle Rac crs无法启动
    删除undotbs后,数据库无法启动
  • 原文地址:https://www.cnblogs.com/yzx99/p/1209778.html
Copyright © 2020-2023  润新知