zoukankan      html  css  js  c++  java
  • 原型模式中将父类强转为子类为什么不会报错呢?

    刚看到《大话设计模式》中的讲原型模式的一个Demo,其中有将父类对象强转为子类对象,理论上是不可以的,而且我写了个Demo测试也是不可以,但是我运行书上的Demo却能跑过去,让我很不解,希望能有人帮忙解释下原由,代码贴在下面:

    Code
     class Program
        {
            
    static void Main(string[] args)
            {
                Resume a 
    = new Resume("大鸟");
                a.SetPersonalInfo(
    "","29");
                a.SetWorkExperience(
    "2008-2009","华为");
                Resume b 
    = (Resume)a.Clone();
                
    //Resume c = (Resume)(new object());
                b.Display();
                Console.Read();



             
            }
        }

        
    class Resume:ICloneable
        {
            
    private string name;
            
    private string sex;
            
    private string age;
            
    private string timeArea;
            
    private string company;

            
    public Resume(string name)
            {
                
    this.name = name;
            }
            
    public void SetPersonalInfo(string sex, string age)
            {
                
    this.age = age;
                
    this.sex = sex;
            }
            
    public void SetWorkExperience(string timeArea, string company)
            {
                
    this.timeArea = timeArea;
                
    this.company = company;
            }

            
    public void Display()
            {
                Console.WriteLine(
    "{0}{1}{2}", name, sex, age);
                Console.WriteLine(
    "{0}{1}", timeArea, company);
            }

            
    #region ICloneable 成员

            
    public object Clone()
            {
                
    return (object)this.MemberwiseClone();
            }

            
    #endregion
        }

    如果我把注释部分运行起来,就会报无法将类型为“System.Object”的对象强制转换为类型。

    a.clone()返回的其实也是个object对象,为什么 Resume b = (Resume)a.Clone();是对的,而Resume c = (Resume)(new object());却运行时报错呢?

    不解...

  • 相关阅读:
    Android 适配知识点
    Android Studio各种快捷功能及好用的插件
    81.Android之沉浸式状态栏攻略
    8.Android 系统状态栏沉浸式/透明化解决方案
    为开发者准备的 Android 函数库(2016 年版)
    GitHub 上 57 款最流行的开源深度学习项目
    7.Android开源项目WheelView的时间和地址联动选择对话框
    6.初探Asynctask
    5.Android消息推送机制简单例子
    让你Android开发更简单
  • 原文地址:https://www.cnblogs.com/shineqiujuan/p/1503931.html
Copyright © 2011-2022 走看看