新足迹

 找回密码
 注册

精华好帖回顾

· 我的童年在松嫩平原 (2013-7-20) 遥望海鲜 · 与人斗,其乐无穷-kitcat买房记 (2009-6-19) kitcat
· 悉尼参加汽车拍卖胜利归来(作业完毕,最新照片) (2007-1-8) 希曼 · 浅谈宝宝上CC!欢迎妈妈们加入讨论!! (2015-4-21) jennysying
Advertisement
Advertisement
12
返回列表 发新帖
楼主:kr2000

面试题:关于Polymorphism [复制链接]

发表于 2011-4-14 21:31 |显示全部楼层
此文章由 porcorosso 原创或转贴,不代表本站立场和观点,版权归 oursteps.com.au 和作者 porcorosso 所有!转贴必须注明作者、出处和本声明,并保持内容完整
原帖由 jands 于 2011-4-14 19:03 发表


有動嗎? 我盯了幾分鐘都沒動啊? 就是左下角的燈會閃


算的了。。。呵呵
Advertisement
Advertisement
头像被屏蔽

禁止发言

发表于 2011-4-15 09:56 |显示全部楼层
此文章由 linkspeed 原创或转贴,不代表本站立场和观点,版权归 oursteps.com.au 和作者 linkspeed 所有!转贴必须注明作者、出处和本声明,并保持内容完整
OO的概念里面是没有interface的, 只有继承,

但是在语言实现上面多重继承太复杂了。
而且用起来也不方便。所以后来变成单个继承,
其他用interface。多重继承在java,c#那些就没有了。
c++还有保留。

发表于 2011-4-15 12:23 |显示全部楼层
此文章由 dadumile 原创或转贴,不代表本站立场和观点,版权归 oursteps.com.au 和作者 dadumile 所有!转贴必须注明作者、出处和本声明,并保持内容完整
原帖由 dalaohu 于 2011-4-14 00:16 发表
面试时有太多无聊得问题,影象比较深得一次,有个人上来先牛b哄哄得吹嘘了一段他得光荣历史。
后来他问到一个关于extension method得问题,大致是问,如果你能access 到源代码 (就是说你有全线修改源代码),那你还会去用extensio ...


为什么是两码事? 我看都是往要使用的类中加方法. 只是在不同的条件下用. 能也点化一下我吗?
无病第一利,知足第一富,善友第一亲,温馨第一乐
头像被屏蔽

禁止访问

发表于 2011-4-15 12:55 |显示全部楼层
此文章由 atransformer 原创或转贴,不代表本站立场和观点,版权归 oursteps.com.au 和作者 atransformer 所有!转贴必须注明作者、出处和本声明,并保持内容完整
原帖由 dadumile 于 2011-4-15 11:23 发表


为什么是两码事? 我看都是往要使用的类中加方法. 只是在不同的条件下用. 能也点化一下我吗?


我来瞎说两句。 extension method 的一大好处是,不需要把一个很复杂的class library再编译一边。

当然了 msdn 说了
“In general, we recommend that you implement extension methods sparingly and only when you have to. Whenever possible, client code that must extend an existing type should do so by creating a new type derived from the existing type. For more information, see Inheritance (C# Programming Guide).

When using an extension method to extend a type whose source code you cannot change, you run the risk that a change in the implementation of the type will cause your extension method to break.

If you do implement extension methods for a given type, remember the following two points:

An extension method will never be called if it has the same signature as a method defined in the type.

Extension methods are brought into scope at the namespace level. For example, if you have multiple static classes that contain extension methods in a single namespace named Extensions, they will all be brought into scope by the using Extensions; directive.”

发表于 2011-4-15 13:36 |显示全部楼层
此文章由 乱码 原创或转贴,不代表本站立场和观点,版权归 oursteps.com.au 和作者 乱码 所有!转贴必须注明作者、出处和本声明,并保持内容完整
原帖由 dadumile 于 2011-4-15 11:23 发表


为什么是两码事? 我看都是往要使用的类中加方法. 只是在不同的条件下用. 能也点化一下我吗?


很多情况下不用任何Polymorphism/extend method照样可以干活,不过有的情况下不那么漂亮/不够专业,有较真的还complain用Polymorphism牺牲performance呢.

不过这些东西都是基本素质,如果能保持code的优雅就尽量这么做,尽量避免用if..else的判断。

写framework level的东西,不用Polymorphism/extend method基本上就很难实现了。

做上层应用的话,要求低点,根据project的规模,用不用没所谓,不是强求的。

评分

参与人数 1积分 +2 收起 理由
atransformer + 2 如何避免用if..else的判断?

查看全部评分

发表于 2011-4-15 15:15 |显示全部楼层
此文章由 乱码 原创或转贴,不代表本站立场和观点,版权归 oursteps.com.au 和作者 乱码 所有!转贴必须注明作者、出处和本声明,并保持内容完整
@atransformer,如何避免用if..else的判断?

--如果不用inheritance/polymorphism/interface,对不用class method的invocation就很ugly,要用到对其type的if..else/switch的判断,还有很多cast,在runtime作这些,typesafe/performance就很有问题,还是尽量避免。
Advertisement
Advertisement

发表于 2011-4-15 16:52 |显示全部楼层
此文章由 starchu 原创或转贴,不代表本站立场和观点,版权归 oursteps.com.au 和作者 starchu 所有!转贴必须注明作者、出处和本声明,并保持内容完整
@atransformer,如何避免用if..else的判断?

参考如何重构if-else的各种方法,最常见的是用polymorphism替代各类if-else, 可以参考如下在线资料
http://sourcemaking.com/refactor ... l-with-polymorphism

发表于 2011-4-15 17:10 |显示全部楼层
此文章由 dadumile 原创或转贴,不代表本站立场和观点,版权归 oursteps.com.au 和作者 dadumile 所有!转贴必须注明作者、出处和本声明,并保持内容完整
原帖由 乱码 于 2011-4-15 12:36 发表


很多情况下不用任何Polymorphism/extend method照样可以干活,不过有的情况下不那么漂亮/不够专业,有较真的还complain用Polymorphism牺牲performance呢.

不过这些东西都是基本素质,如果能保持code的优雅就尽量这么做, ...


我还是不太明白为什么面试的人问这个问题显得很傻很无知.

不好意思初学者, 问题就是多.
无病第一利,知足第一富,善友第一亲,温馨第一乐

发表于 2011-4-15 17:55 |显示全部楼层
此文章由 乱码 原创或转贴,不代表本站立场和观点,版权归 oursteps.com.au 和作者 乱码 所有!转贴必须注明作者、出处和本声明,并保持内容完整
原帖由 dadumile 于 2011-4-15 16:10 发表


我还是不太明白为什么面试的人问这个问题显得很傻很无知.

不好意思初学者, 问题就是多.


至于为啥很傻很天真,我就不知道了,可能看上dalaohu了?
头像被屏蔽

禁止访问

发表于 2011-4-15 18:01 |显示全部楼层
此文章由 atransformer 原创或转贴,不代表本站立场和观点,版权归 oursteps.com.au 和作者 atransformer 所有!转贴必须注明作者、出处和本声明,并保持内容完整
原帖由 starchu 于 2011-4-15 15:52 发表
@atransformer,如何避免用if..else的判断?

参考如何重构if-else的各种方法,最常见的是用polymorphism替代各类if-else, 可以参考如下在线资料
http://sourcemaking.com/refactor ... l-with-polymorphism


我只看到了 switch.. case, 替代各类if-else, 不是么?
不是. i shall kill myself

[ 本帖最后由 atransformer 于 2011-4-15 17:11 编辑 ]

发表回复

您需要登录后才可以回帖 登录 | 注册

本版积分规则

Advertisement
Advertisement
返回顶部