就Java而言,当有人问:
什么是多态?
将超载或重载是一个可以接受的答案?
我认为还有更多的东西.
如果您有一个抽象基类定义了一个没有实现的方法,并且您在子类中定义了该方法,那还是会覆盖吗?
我认为超载肯定不是正确的答案.
据我所知:
C++提供了三种不同类型的多态性.
除了上述三种类型的多态性外,还存在其他种类的多态性:
我知道运行时多态性可以通过虚函数实现 ,静态多态可以通过模板函数实现
但对于另外两个
ad-hoc多态性:
如果可以使用的实际类型的范围是有限的,并且必须在使用之前单独指定组合,则这称为ad-hoc多态.
参数多态性:
如果所有代码都是在没有提及任何特定类型的情况下编写的,因此可以透明地使用任意数量的新类型,这称为参数多态.
我几乎无法理解他们:(
任何人都可以用一个例子解释他们两个吗?我希望这些问题的答案对他们大学的许多新的消息有所帮助.
我看过其他定义和解释,但没有一个能让我满意.我想知道是否有人可以在不使用任何代码或示例的情况下在最多两个句子中定义多态性.我不想听到'所以你有一个人/汽车/开罐器......'或者这个词是如何衍生出来的(没有人会对你知道poly和morph意味着什么感到印象深刻).如果你非常了解多态性是什么并且掌握了良好的英语能力,那么你应该能够在一个简短的,虽然密集的定义中回答这个问题.如果你的定义准确地定义了多态,但是如此密集以至于需要一些读取,那么这正是我正在寻找的.
为什么只有两句话?因为定义简短而且聪明.解释很长,包含示例和代码.在这里查看解释(这些页面上的答案对我的问题不满意):
我为什么问这个问题?因为我被问到同样的问题而且我发现我无法得出令人满意的定义(根据我的标准,这是非常高的).我想看看这个网站上是否有任何伟大的思想能够做到这一点.
如果你真的不能完成两句话的要求(这是一个难以定义的主题),那么如果你继续下去就没关系.我们的想法是有一个定义,它实际上定义了什么是多态,并没有解释它的作用或如何使用它(得到差异?).
我正在阅读Head First面向对象设计,以便更好地理解OOP概念.
多态性解释为:
Airplane plane = new Airplane();
Airplane plane = new Jet();
Airplane plane = new Rocket();
Run Code Online (Sandbox Code Playgroud)
您可以编写适用于超类的代码,如飞机,但可以使用任何子类.: - 嗯...... 我得到了这个.*.
它进一步解释说:
- > 那么多态如何使代码变得灵活?
好吧,如果你需要新的功能,你可以写一个新的AirPlane子类.但是,由于您的代码使用了超类,因此您的新类将在不对代码的其余部分进行任何更改的情况下工作.
现在我没有得到它.我需要创建一个飞机的子类.例如:我创建一个类,Randomflyer.要使用它,我将不得不创建它的对象.所以我会用:
Airplane plane = new Randomflyer();
Run Code Online (Sandbox Code Playgroud)
我没有得到它.即使我会直接创建子类的对象.当我添加新的子类时,我仍然不需要在任何地方更改我的代码.使用超类如何使我免于对其余代码进行额外更改?
我有一个集合(或列表或数组列表),我想在其中放置String值和double值.我决定使它成为一个对象集合并使用重载ond多态,但我做错了.
我做了一点测试:
public class OOP {
void prova(Object o){
System.out.println("object");
}
void prova(Integer i){
System.out.println("integer");
}
void prova(String s){
System.out.println("string");
}
void test(){
Object o = new String(" ");
this.prova(o); // Prints 'object'!!! Why?!?!?
}
public static void main(String[] args) {
OOP oop = new OOP();
oop.test(); // Prints 'object'!!! Why?!?!?
}
}
Run Code Online (Sandbox Code Playgroud)
在测试中,似乎参数类型是在编译时而不是在运行时决定的.这是为什么?
这个问题与以下内容有关:
编辑:
好的,要调用的方法是在编译时决定的.是否有解决方法以避免使用instanceof运营商?
可能重复:
尝试尽可能简单地描述多态
我从来没有能够完全理解多态性是什么.有人可以用一个例子解释它是什么以及它是如何工作的?只是基础知识.
我有一个与OOPS概念有关的问题.
public class BaseClass
{
public int i = 10;
public int x = 30;
public string str = "Hello";
public virtual string Hello()
{
return "Hello of base class called";
}
}
Run Code Online (Sandbox Code Playgroud)
public class ChildClass : BaseClass
{
public int i = 20;
public int z = 90;
public override string Hello()
{
return "Hello of child class called";
}
}
Run Code Online (Sandbox Code Playgroud)
现在我已经看到下面的代码工作正常
BaseClass baseObject = new ChildClass();
Run Code Online (Sandbox Code Playgroud)
当我输入时,我baseObject.只看到成员BaseClass.
第一个问题:有人可以告诉我开发人员需要这样做的情况BaseClass baseObject = new …
可能重复:
尝试尽可能简单地描述多态
你如何定义polymorphismCS 101学生?尽可能简洁(可能是几行的答案,而不是太技术性).谢谢
polymorphism ×8
oop ×6
java ×2
overloading ×2
.net ×1
c# ×1
c++ ×1
c++-faq ×1
overriding ×1
terminology ×1