zoukankan      html  css  js  c++  java
  • 这样写为什么不出错: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。很后面才发现这个问题,难道是对象是允许定义成它的父类的吗?定义完成后,虽然它执行的都是子类的代码,但如果子类新增加的东西,编译器是不让通过的,即对象只能执行父类的成员函数。

  • 相关阅读:
    smarty-2014-02-28
    PHP Functions
    Zabbix自定义监控网站服务是否能够正常响应
    Zabbix自定义监控网站服务是否能够正常响应
    shell技巧
    shell技巧
    ansible安装配置zabbix客户端
    ansible安装配置zabbix客户端
    shell命令getopts
    shell命令getopts
  • 原文地址:https://www.cnblogs.com/yzx99/p/1209778.html
Copyright © 2011-2022 走看看