首页新闻招聘找找看知识库
  • 回复:5 浏览:153 2015-05-23 23:37 来自 iiRecord

    作者在第二章里氏替换原则中关于“覆盖或实现父类的方法时输入参数可以被放大”举了 Father 和 Son 的例子。我照着例子在 C# 写了一下,发现不是向书中所说。我就是表达这个例子比较和语言相关吧。

    using System;
    
    class Map {
        const int a = 100;
    }
    
    class HashMap : Map {
        const int b = 200;
    }
    
    class Father {
        public void DoSomething(HashMap h)
        {
            Console.WriteLine("Father do something");
        }
    }
    
    class Son : Father {
        public void DoSomething(Map h)
        {
            Console.WriteLine("Son do something");
        }
    }
    
    class Entry {
        static void Main()
        {
            HashMap h = new HashMap();
            Father f = new Father();
            f.DoSomething(h);
            Son o = new Son();
            o.DoSomething(h);
        }
    }

    编译和运行结果:

    E:\WorkPlace\ProgrammingCSharp4>csc /out:t1.exe tmp1.cs
    Microsoft (R) Visual C# 2010 Compiler version 4.0.30319.1
    Copyright (C) Microsoft Corporation. All rights reserved.
    
    
    E:\WorkPlace\ProgrammingCSharp4>t1
    Father do something
    Son do something   ---> 这里和书中输出不一样

     

     

  • 路上有多远
    2016-05-19 16:26 路上有多远

    package jvmProject;

    import java.util.HashMap;
    import java.util.Map;

    public class Father {

    public void DoSomething(HashMap h)
    {
    System.out.println("Father do something");
    }

    class Son extends Father{

    public void DoSomething(Map h)
    {
    System.out.println("Father do something");
    }
    }
    public static void main(String[] args) {
    HashMap m = new HashMap();
    Father f = new Father();
    f.DoSomething(m);
    Son s = f.new Son();
    s.DoSomething(m);
    }
    }



    console:


    Father do something
    Father do something



    java是支持这种模式的
    第1楼 回到顶楼
  • 灰6太9狼
    2016-08-05 01:46 灰6太9狼
    用错了吧C# 也支持的!
    第2楼 回到顶楼
  • 丹尼大叔
    2016-08-05 10:17 丹尼大叔
    你的结果是正确的
    第3楼 回到顶楼
  • 全力以赴001
    2016-08-12 17:16 全力以赴001
    就是继承的原则吧...
    第4楼 回到顶楼
  • 小猪-
    2017-10-07 20:57 小猪-
    楼主可以啊!还不如看看我这个全套【设计模式视频】
    链接:https://pan.baidu.com/s/1hsfzniG 密码:ivtk
    第5楼 回到顶楼
登录后才能评论,请先登录注册