我通过了一次考试,遇到了一个问题,在这个问题上,我们没有和同事们达成一致。
С++
1 class Base {};
2 class Derived : public Base {};
3 class Foo
4 {
5 public:
6 Foo()
7 {
-8- Base* b = new Derived(); // Concept name is?
9 }
10 };C#
1 abstract class Base{}
2 public class Derived : Base{}
3
4 public class Foo
5 {
6 public Foo
7 {
-8- Base b = new Derived(); // Concept name is?
9 }
10 }问题是:上面的第8行是以下oo概念的一个示例
请将答案与知识来源联系起来。
测试是“OO概念”在breinbench上。它是免费的。
更新:
为polymorphism辩护的答案之一
简单地说,多态性是一种类型A以另一种类型出现和使用的能力。在强类型语言中,这通常意味着A类型从B类型派生而来,或者类型A实现了一个表示B类型的接口。
来自维基百科,它为继承辩护
继承有时也称为泛化,因为是--关系表示对象类之间的层次结构。
和
因此,继承具有另一个视图,称为多态,它描述了由共享控制代码控制的许多代码段。
所以a'(inheritance).是Base = new Derived()秀其结果是polymorphism.
所以我怀疑什么是对的?
发布于 2009-04-22 21:09:03
这个问题很容易..。这是多态性。
多态行为是由于继承而完成的。您可以将派生实例视为Base,因为派生继承来自Base。这是将多态性应用于OO语言中的类型时的定义。
科学)
更新,更新
我希望这足够确定..。这些都是不同的方式来表达相同的东西。
多态(C#编程指南)
通过继承,一个类可以作为多个类型使用;如果它实现接口,它可以作为它自己的类型、任何基本类型或任何接口类型。这称为多态。
更新
考虑到这些评论我会尽量说得更具体..。我并不是说派生继承了Base,即该行是多态行为的一个示例,我是说将实例分配给它派生的类型的变量是多态行为的一个例子。引用我所附链接的第一句..。
在计算机科学中,多态是一种编程语言特性,允许使用统一的接口处理不同数据类型的值
这意味着我可以将派生的一个实例作为Base的一个实例来处理,这表明了一个多态行为。这并不取决于类中是否存在虚拟方法才是true。
还有一句来自不同来源的话..。
简单地说,多态性是一种类型A以另一种类型出现和使用的能力。在强类型语言中,这通常意味着A类型从B类型派生而来,或者类型A实现了一个表示B类型的接口。
发布于 2009-04-22 21:25:34
真正的答案是:一个不完善的、因此毫无意义的问题。
这应该是一个标准化的选择题,但是你有很多年的经验还没有达成共识。唯一应该得出的结论是,作为知识的衡量标准,它是无用的。
发布于 2009-04-22 19:48:26
这个片段是关于继承的
概念概述
抽象是关于从对象的角度来建模一个现实世界概念的整个想法,而不是考虑函数调用或其他东西。它基本上是把对象看作是独立的实体。
封装是在定义良好的接口之后,将对象的实现隐藏在外部世界的行为。
继承是派生类和基类之间的关系以及概念的分类。它定义了“is -一种”实体之间的关系,增加了在需要基的情况下使用派生类的能力。
多态性意味着两个对象在接口上相似,但行为方式不同(考虑virtual方法)。
聚合定义了两个概念之间的“has”关系。表示一个对象是由另一个实体组成的。
https://stackoverflow.com/questions/778888
复制相似问题