Tag: 多态性

如何在C中模拟OO风格的多态?

有没有办法用C编程语言编写类OO代码? 也可以看看: 你能用C编写面向对象的代码吗? C中的面向对象 通过search“[c] oo”find。

多态模型绑定

在之前的MVC版本中,这个问题已经被问到了。 这个博客也有关于解决这个问题的方法。 我想知道是否MVC3引入了任何可能的帮助,或者如果有任何其他的select。 简而言之。 这是情况。 我有一个抽象的基础模型,和2个具体的子类。 我有一个用EditorForModel()渲染模型的强types视图。 然后我有自定义模板来呈现每个具体types。 问题出现在后期。 如果我做了后置动作方法以基类作为参数,那么MVC不能创build它的抽象版本(我不想要反正,我想它创build实际的具体types)。 如果我创build了多个仅通过参数签名变化的后操作方法,那么MVC抱怨它是不明确的。 所以据我所知,我有几个关于如何解决这个问题的select。 我不喜欢其中的任何一种,但是我会在这里列出来: 创build一个自定义的模型绑定器,如Darin在我链接的第一篇文章中所build议的。 创build一个鉴别属性作为我build议链接的第二篇文章。 根据types发布到不同的操作方法 ??? 我不喜欢1,因为它基本上是隐藏的configuration。 其他一些开发代码的开发人员可能并不知道,并且浪费了大量的时间来弄清楚为什么事情会改变。 我不喜欢2,因为它似乎有点哈克。 但是,我倾向于这种方法。 我不喜欢3,因为这意味着违反干。 还有其他build议吗? 编辑: 我决定采用达林的方法,但做了一点小改变。 我把这个添加到我的抽象模型中: [HiddenInput(DisplayValue = false)] public string ConcreteModelType { get { return this.GetType().ToString(); }} 然后隐藏自动生成在我的DisplayForModel() 。 唯一要记住的是,如果你不使用DisplayForModel() ,你必须自己添加它。

在c ++中的多态性

据我所知: C ++提供了三种不同types的多态性。 虚拟function 函数名称重载 运算符重载 除上述三种多态性之外,还存在其他种类的多态性: 运行 编译时间 特别的多态性 参数多态性 我知道运行时多态性可以通过虚拟函数来实现, 静态多态性可以通过模板函数来实现 但是对于另外两个 特别的多态性 网站参数多态性说 , ad-hoc多态性: 如果可以使用的实际types的范围是有限的,并且在使用之前必须单独指定这些组合,这被称为ad-hoc多态性。 参数多态性: 如果所有代码都没有提及任何特定的types,因此可以透明地使用任何数量的新types,它被称为参数多态性。 我很难理解他们:( 任何人都可以用一个例子来解释它们吗? 我希望这个问题的答案能够帮助这些大学的许多新的辍学。

什么是多态,什么是它,它是如何使用的?

我正在观看Google Tech Talksvideo,他们经常提到多态性。 什么是多态,什么是它,它是如何使用的?

List <Dog>是List <Animal>的一个子类吗? 为什么不是Java的generics隐式多态?

我对Javagenerics如何处理inheritance/多态性有些困惑。 假设以下层次结构 – 动物 (家长) 狗 – 猫 (儿童) 所以假设我有一个方法doSomething(List<Animal> animals) 。 按照所有inheritance和多态的规则,我会假定一个List<Dog> 是一个List<Animal> ,一个List<Cat> 是一个List<Animal> – 所以任何一个都可以传递给这个方法。 不是这样。 如果我想实现这种行为,我必须明确地告诉方法通过说doSomething(List<? extends Animal> animals)接受动物子集的doSomething(List<? extends Animal> animals) 。 我明白这是Java的行为。 我的问题是为什么 ? 为什么多态一般是隐含的,但是当涉及到generics时,必须指定它?